好吧我一直在這個工作了幾個小時,現在無法找出我的問題。我有一個雙鏈表,當我嘗試向它添加一個新節點時,它將更改鏈表中的所有值。鏈接列表添加節點更改所有節點值而不是隻有一個
現在這就是我:
void createSub(sibs *root, char *name, int size) {
if(root->subSibs == NULL) {
root->subSibs = (sibs *)malloc(sizeof(sibs));
root->subSibs->name = name;
root->subSibs->time_stamp = createTimeStamp();
root->subSibs->nextSib = NULL;
}
sibs *temp = root->subSibs;
if(temp != NULL) {
while(temp->nextSib != NULL)
temp = temp->nextSib;
}
sibs *t = (sibs *)malloc(sizeof(sibs));
t->name = name;
t->time_stamp = createTimeStamp();
t->nextSib = NULL;
if(temp != NULL)
temp->nextSib = t;
printf("root->subSibs->name = %s\n", root->subSibs->name);
(root->numSub)++;
}
這可能不是完美考慮到我已經改變了100萬次。有人能告訴我我在這裏做錯了嗎?
root
是我正在使用的根節點,而subSibs
是指向鏈接列表的指針。我正在做的是向root->subSibs
指向的鏈接列表中的每個節點添加名稱和時間戳。
我出去的是:
createSub(root, name1, size);
打印:
root->subSibs1: name1;
createSub(root, name2, size);
打印:
root->subSibs1: name2;
root->subSibs2: name2;
等等
它可能會有些真的真的愚蠢的錯誤,但任何幫助會b令人驚歎。我一直在努力幾個小時,只需要有人告訴我爲什麼它會改變名稱。
另外,如果我做strcpy(root->subSibsi->name, name); for i = 0-5; root->subSibs1->name
打印垃圾,然後root->subSibs2->name
打印正確的名稱,然後root->subSibs3->name
打印垃圾(同subSibs1->name
)等等...
是否有一個其他塊錯過後初始如果? – 2012-04-16 08:55:02