Cập nhật một phần tử của danh sách liên kết đơn trong C



Bài tập C: Cập nhật một phần tử của danh sách liên kết đơn

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 đơn và cách cập nhật một phần tử của danh sách liên kết đơn 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 cập nhật một phần tử của danh sách liên kết đơn trong C:

#include 
#include struct node {
   int data;
   struct node *next;
};struct node *head = NULL;
struct node *current = NULL;//tao danh sach lien ket
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;
      return;
   }   current = head;
   
   // di chuyen toi phan cuoi list
   while(current->next!=NULL)
      current = current->next;
   
   // chen link vao phan cuoi cua list
   current->next = link; 
}void display() {
   struct node *ptr = head;   printf("\n[head] =>");
   //bat dau tu phan dau cua list
   while(ptr != NULL) {
      printf(" %d =>",ptr->data);
      ptr = ptr->next;
   }   printf(" [null]\n");
}void update_data(int old, int new1) {
   int pos = 0;
   
   if(head==NULL) {
      printf("Danh sach lien ket chua duoc khoi tao");
      return;
   }    current = head;
   while(current->next!=NULL) {
      if(current->data == old) {
         current->data = new1;
         printf("\nTim thay %d tai vi tri %d, duoc thay the voi %d\n", old, pos, new1);
         return;
      }
      current = current->next;
      pos++;
   }
   printf("%d khong ton tai trong list\n", old);
}
int main() {
   insert(10);
   insert(20);
   insert(30);
   insert(1);
   insert(40);
   insert(56);    display();
   update_data(40, 44);
   display();
   
   return 0;
}

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

Cập nhật phần tử của danh sách liên kết đơn trong C
danh-sach-lien-ket-trong-c.jsp