Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

โปรแกรมสำหรับโหนดที่ n จากจุดสิ้นสุดของ Linked List ในโปรแกรม C


ด้วย n โหนด งานคือการพิมพ์โหนดที่ n จากจุดสิ้นสุดของรายการที่เชื่อมโยง โปรแกรมต้องไม่เปลี่ยนลำดับของโหนดในรายการ แต่ควรพิมพ์เฉพาะโหนดที่ n จากรายการสุดท้ายที่เชื่อมโยงเท่านั้น

ตัวอย่าง

Input -: 10 20 30 40 50 60
   N=3
Output -: 40

ในตัวอย่างข้างต้น เริ่มจากโหนดแรกจนถึงโหนดที่นับ n ถูกข้ามไปเช่น 10,20 30,40, 50,60 และโหนดที่สามจากโหนดสุดท้ายคือ 40

โปรแกรมสำหรับโหนดที่ n จากจุดสิ้นสุดของ Linked List ในโปรแกรม C

แทนที่จะสำรวจรายการทั้งหมดสามารถปฏิบัติตามแนวทางที่มีประสิทธิภาพนี้ได้ -

  • ใช้ตัวชี้ชั่วคราว สมมติว่า อุณหภูมิของโหนดประเภท
  • ตั้งค่าตัวชี้ชั่วคราวนี้เป็นโหนดแรกซึ่งชี้โดยตัวชี้ส่วนหัว
  • ตั้งค่าตัวนับจำนวนโหนดในรายการ
  • ย้าย temp ไปที่ temp → ถัดไป จนถึง count-n
  • แสดงอุณหภูมิ → ข้อมูล

ถ้าเราใช้วิธีนี้ กว่า count จะเป็น 5 และโปรแกรมจะวนซ้ำจนถึง 5-3 เช่น 2 ดังนั้นเริ่มตั้งแต่ 10 ในวันที่ 0 th ตำแหน่งกว่าถึง 20 ในวันที่ 1 st สถานที่และ 30 ในวันที่ 2 nd ตำแหน่งที่เป็นผล ดังนั้นด้วยวิธีนี้จึงไม่จำเป็นต้องสำรวจรายการทั้งหมดจนจบซึ่งจะช่วยประหยัดพื้นที่และหน่วยความจำ

อัลกอริทึม

Start
Step 1 -> create structure of a node and temp, next and head as pointer to a structure node
   struct node
      int data
      struct node *next, *head, *temp
   End
Step 2 -> declare function to insert a node in a list
   void insert(int val)
      struct node* newnode = (struct node*)malloc(sizeof(struct node))
      newnode->data = val
      IF head= NULL
         set head = newnode
         set head->next = NULL
      End
      Else
         Set temp=head
         Loop While temp->next!=NULL
            Set temp=temp->next
         End
         Set newnode->next=NULL
         Set temp->next=newnode
      End
Step 3 -> Declare a function to display list
   void display()
      IF head=NULL
         Print no node
      End
      Else
         Set temp=head
         Loop While temp!=NULL
            Print temp->data
            Set temp=temp->next
         End
      End
Step 4 -> declare a function to find nth node from last of a linked list
   void last(int n)
      declare int product=1, i
      Set temp=head
      Loop For i=0 and i<count-n and i++
         Set temp=temp->next
      End
      Print temp->data
Step 5 -> in main()
   Create nodes using struct node* head = NULL
   Declare variable n as nth to 3
   Call function insert(10) to insert a node
   Call display() to display the list
   Call last(n) to find nth node from last of a list
Stop

ตัวอย่าง

#include<stdio.h>
#include<stdlib.h>
//structure of a node
struct node{
   int data;
   struct node *next;
}*head,*temp;
int count=0;
//function for inserting nodes into a list
void insert(int val){
   struct node* newnode = (struct node*)malloc(sizeof(struct node));
   newnode->data = val;
   newnode->next = NULL;
   if(head == NULL){
      head = newnode;
      temp = head;
      count++;
   } else {
      temp->next=newnode;
      temp=temp->next;
      count++;
   }
}
//function for displaying a list
void display(){
   if(head==NULL)
      printf("no node ");
   else {
      temp=head;
      while(temp!=NULL) {
         printf("%d ",temp->data);
         temp=temp->next;
      }
   }
}
//function for finding 3rd node from the last of a linked list
void last(int n){
   int i;
   temp=head;
   for(i=0;i<count-n;i++){
      temp=temp->next;
   }
   printf("\n%drd node from the end of linked list is : %d" ,n,temp->data);
}
int main(){
   //creating list
   struct node* head = NULL;
   int n=3;
   //inserting elements into a list
   insert(1);
   insert(2);
   insert(3);
   insert(4);
   insert(5);
   insert(6);
   //displaying the list
   printf("\nlinked list is : ");
   display();
   //calling function for finding nth element in a list from last
   last(n);
   return 0;
}

ผลลัพธ์

linked list is : 1 2 3 4 5 6
3rd node from the end of linked list is : 4