作者supercygnus (......)
看板Programming
標題[問題] C++ 鏈結串列跑不出來,快崩潰
時間Sun Aug 19 22:07:12 2012
#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