Tìm kiếm phần tử trong danh sách liên kết vòng trong C



Bài tập C: Tìm kiếm phần tử trong danh sách liên kết vòng

Bài tập C này giúp bạn làm quen dần với cách tạo danh sách liên kết vòng và cách tìm kiếm phần tử trong danh sách liên kết vòng trong C. Để giải bài tập này, mình sử dụng cấu trúc struct trong C.

Chương trình C

Dưới đây là chương trình C để giải bài tập tìm kiếm phần tử trong danh sách liên kết vòng trong C:

#include 
#include struct node {
   int data;
   struct node *next;
};struct node *head = NULL;
struct node *current = NULL;//chen link tai vi tri dau tien
void insert(int data) {
   // cap phat bo nho cho node moi;
   struct node *link = (struct node*) malloc(sizeof(struct node));   link->data = data;
   link->next = NULL;   // neu head la trong, tao list moi
   if(head==NULL) {
      head = link;
      head->next = link;
      return;
   }   current = head;
   
   // di chuyen toi phan cuoi list
   while(current->next != head)
      current = current->next;
   
   // chen link vao phan cuoi cua list
   current->next = link;
   
   // lien ket last node voi head
   link->next = head;
   
}//hien thi list
void find_data(int item) {
   int pos = 0;   if(head == NULL) {
      printf("Danh sach lien ket chua duoc khoi tao");
      return;
   }    current = head;   while(current->next != head) {
      if(current->data == item) {
         printf("Tim thay %d tai vi tri %d\n", item, pos);
         return;
      }      current = current->next;
      pos++;
   }   if(current->data == item) {
      printf("Tim thay %d tai vi tri %d\n", item, pos);
      return;
   }   printf("%d khong ton tai trong list", item);
}int main() {
   insert(10);
   insert(20);
   insert(30);
   insert(1);
   insert(40);
   insert(56); 
   
   find_data(56);   return 0;
}

Biên dịch chương trình C trên sẽ cho kết quả:

Tìm kiếm phần tử trong danh sách liên kết vòng trong C
danh-sach-lien-ket-trong-c.jsp