Re: [問題] 鏈結串列 哪邊錯了@@?
看板C_and_CPP (C/C++)作者takearest (takearest)時間15年前 (2010/07/28 19:58)推噓0(0推 0噓 0→)留言0則, 0人參與討論串2/2 (看更多)
※ 引述《homal (\冏/)》之銘言:
: struct Nodes
: {
: int data;
: Nodes *next;
: };
: Node* ins(Nodes *ptr, int num)
: {
: Nodes *tmp_ptr = ptr;
: Nodes *ptrNewNode = new Nodes;
: ptrNewNode->data = num;
: ptrNewNode->next = NULL;
: if (ptr == NULL)
: {
: return ptrNewNode;
: }
: while (tmp_ptr->next != NULL)
: {
: tmp_ptr = tmp_ptr->next;
: }
: tmp_ptr->next= ptrNewNode;
: }
: int main()
: {
: Nodes *hdr = NULL;
: hdr = ins(hdr, 10);
: ins(hdr, 20);
: ins(hdr, 30);
: return 0;
: }
: 想要達成的效果是: hdr -> 10 -> 20 -> NULL
: 不過 trace 了程式後發現, hdr 的值永遠都是 null
: 參悟不透啊 T_T
以下是我在PC Linux下把你的code做部分修改,用gcc編譯可動,供你參考~
#include <stdio.h>
typedef struct
{
int data;
struct Nodes *next;
}Nodes;
Nodes* ins(Nodes *ptr, int num)
{
Nodes *tmp_ptr = ptr;
Nodes *ptrNewNode =(Nodes *)malloc(sizeof(Nodes));
ptrNewNode->data = num;
ptrNewNode->next = NULL;
if (ptr == NULL)
{
return ptrNewNode;
}
while (tmp_ptr->next != NULL)
{
tmp_ptr =(Nodes *) tmp_ptr->next;
}
tmp_ptr->next=(struct Nodes *) ptrNewNode;
}
int main()
{
Nodes *hdr = NULL,*tmp;
hdr = ins(hdr, 10);
ins(hdr, 20);
ins(hdr, 30);
tmp=hdr;
while(tmp!=NULL)
{
printf("val=%d\n",tmp->data);
tmp=(Nodes *)tmp->next;
}
return 0;
}
執行結果:
val=10
val=20
val=30
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.120.188.59
※ 編輯: takearest 來自: 59.120.188.59 (07/28 20:00)
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章