struct Node{
int data;
struct Node* next;
};
struct Node* head;
void Insert(int x){
struct Node* temp = (struct Node*)malloc(sizeof(struct Node));
temp->data=x;
temp->next=NULL;
head=temp;
}
void Print(){
struct Node* temp=head;
printf("List is: \n");
do{
printf("%d", temp->data);
temp=temp->next;
}while(temp!=NULL);
}
int main(){
head = NULL;
printf("How many numbers do you want to put into a list? \n");
int n, i, x;
scanf("%d", &n);
for (i=0; i<n; i++){
printf("Enter the number: \n");
scanf("%d", &x);
Insert(x);
Print();
}
}
此代碼僅打印最後一個元素。我已經多次檢查過了,我似乎無法找到這個錯誤。我會很感激如果有人能告訴我哪裏出了問題。這段代碼爲什麼只打印鏈表的最後一個元素?
在此先感謝
不要投malloc'和朋友C. – Olaf
的'結果因爲你總是讓'head'點到新創建的節點。之前的節點丟失。它也會造成內存泄漏。 – Haris
歡迎來到Stack Overflow!這聽起來像你可能需要學習如何使用調試器來遍歷代碼。使用一個好的調試器,您可以逐行執行您的程序,並查看它與您期望的偏離的位置。如果你打算做任何編程,這是一個重要的工具。進一步閱讀:[如何調試小程序](http://ericlippert.com/2014/03/05/how-to-debug-small-programs/)。 –