#include<stdio.h>
struct Node {
int data;
Node *next;
};
void printf(Node *head) {
int i=1;
printf("----------------------------------\n");
for (Node *cur = head; cur != NULL; cur = cur->next) {
printf("Nut thu %d co gia tri la: %d\n",i, cur->data);
i++;
}
}
Node *Del_head(Node *head) {
Node *del = head;
head = head->next;
free(del);
return head;
}
int main() {
int n;
printf("Nhap so luong nut: n = ");scanf("%d",&n);
Node *head, *tail, *newNode;
for (int i=1; i<=n; i++) {
newNode = (Node*)malloc(sizeof(Node));
scanf("%d", &newNode->data);
if (i == 1) {
head = newNode;
tail = newNode;
}
else {
tail->next = newNode;
tail = newNode;
}
}
tail->next = NULL;
printf(Del_head(head)); // printf(head = Del_head(head));
printf("\n%d\n", head->data);
return 0;
}
Anh chị cho em hỏi là đoạn code trên dùng để nhập vào giá trị của n node và xóa node đầu tiên của danh sách liên kết, nhưng khi em in ra giá trị của node đầu tiên sau khi xóa thì nó lại hiển thị ra 1 giá trị xa lạ ạ, còn khi em thay dòng code “printf(Del_head(head))” trong bài trên bằng dòng ở dấu gạch chéo 1 bên thì lại ra được kết quả đúng. Nhờ anh chị giải đáp giúp em với ạ.