作者tonygoog (tonygoog)
看板C_and_CPP
標題[問題] 請問創建未知數量節點的串列
時間Thu Dec 10 20:08:59 2015
目前對C語言串列還不是很熟悉 想請教一下大神有關串列的問題
假設我有n個裝置
都發資料(資料皆不相同)給中心裝置 我想把中心收到的資料建立成串列
之後能複製資料出來使用
n可能10個也可能20個 就一個未知的數量
該如何建立一個串列是擁有n個節點的呢
以下是我錯誤的程式碼主要部分
int i=0;
struct node{ //建立節點結構
int data;
struct node* next;
}Node;
Node* head=(struct node*)malloc(sizeof(struct node)); //頭指標
head->next=NULL;
while(中心裝置buffer沒資料為止) //跑n次
{
Node (*x)[i]=(struct node*)malloc(sizeof(struct node)); /我想這句是整個觀念錯誤
if(i==0)
{
x[i]->next=NULL;
head->next=x[i];
x[i]->data=Buffer當時資料;
}
else
{
x[i]->next=NULL;
x[i-1]->next=x[i];
x[i]->data=Buffer當時資料;
}
i++
}
我想程式的邏輯我應該錯的很離譜
但我用人的邏輯只能想到這樣表達了
網路資料大部分都是在一個串列新增一節點
或是建立以知數量節點的串列
請求大神們解惑了 該如何才能建立未知數量節點的串列
感謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.241.153.24
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1449749346.A.FC0.html
推 stupid0319: 一節一節貼上去啊 12/10 20:12
→ tonygoog: 我也是想一節一節加上去 但不知道正確的做法 12/10 20:16
→ Caesar08: 那句改成Node *x=...,[i]是給array用,你的Node不適用 12/10 20:24
→ Caesar08: 我建議先一個一個加上去,不要一次就想搞定全部 12/10 20:25
→ Caesar08: 這樣講你可能還是不懂,創建一個Node head與node2 12/10 20:30
→ Caesar08: 讓head->next=node2,node2->next=NULL,一個一個加上去 12/10 20:31
→ Caesar08: 你就知道while要怎麼寫了 12/10 20:31
→ tonygoog: 感謝你說的那一行我知道意思 但要搭配while我還不太懂 12/10 20:51
推 leftless: buffer那邊就可以開始串了吧 12/11 09:56
推 leftless: 就是不知道i有多少才用link的不是嗎 12/11 09:59
→ leftless: 阿看懂了 手機排板好詭異 12/11 10:01