看板 Programming 關於我們 聯絡資訊
#include<iostream> using namespace std; struct Node{ int data; Node *link; }; void addNewNode(Node *,int); void listAll(Node *); int main(void){ int i,x; Node *head=NULL; for(i=1;i<=3;i++){ cin>>x; addNewNode(head,x); } listAll(head); system("pause"); return 0; } void addNewNode(Node *ptr,int x){ Node *pNewNode=new Node; pNewNode->data=x; pNewNode->link=NULL; if(NULL==ptr){ ptr=pNewNode;} else{ Node *pTailNode=ptr; while(pTailNode->link!=NULL){ pTailNode=pTailNode->link; } pTailNode->link=pNewNode; } } void listAll(Node *ptr){ while(ptr->link!=NULL){ cout<<ptr->data<<" "; ptr=ptr->link; } } 以上是我的程式碼,compile沒有錯,但是輸入三個數字之後就當機了 沒辦法 listAll 為什麼-.- 我覺得沒有寫錯 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.253.192.142
wrltertnnn:寫錯 60.246.169.41 08/19 22:28
supercygnus:請問哪裏錯了,拜託幫解一下,謝 111.252.242.47 08/19 22:36
saxontai:你的程式在跑完 addNewNode 後,head 依 114.43.248.198 08/19 23:54
saxontai:然是指向 NULL 的。 114.43.248.198 08/19 23:54
supercygnus:ptr=pNewNode不就是把head指向新結點? 111.252.242.47 08/20 00:11
supercygnus:怎會說還指向NULL ? 111.252.242.47 08/20 00:11
saxontai:不信就印出來看啊。 114.43.248.198 08/20 00:15
nienting:邏輯上除了listAll不會把最後一個值印出 219.68.131.221 08/20 00:19
nienting:之外,邏輯是沒錯的,錯在對於傳值和傳址 219.68.131.221 08/20 00:20
nienting:的不瞭解。 addNewNode的參數宣告錯誤 219.68.131.221 08/20 00:21
EdisonX:錯慘了...addNewNode 會 mem leak 180.177.76.161 08/20 00:50
TsinTa:你應該去看C_C++板置底文第13戒 140.114.55.27 08/20 13:44
james732:#1GCIkG_S (C_and_CPP) 可以看這篇的推文 114.32.92.122 08/21 01:13
changyuheng:http://ideone.com/OrE6q 36.224.176.224 09/03 01:25