這個函數獲得一個指向該列表的「虛擬」項(第一項)和struct
輸入「節點」添加...Ç - 添加新項列表
但它進入一個無限循環...最新錯誤?
void listAdd(Node* dummy, Node tmpNode) {
Node* toAdd = (Node*)malloc(sizeof(Node));
*toAdd = tmpNode;
Node *tmp1,*tmp2;
tmp1 = dummy;
tmp2 = (*dummy).next;
while (tmp1 != NULL){
if (((*tmp1).info.id < (*toAdd).info.id && (*tmp2).info.id > (*toAdd).info.id) || (tmp2==NULL)) {
(*toAdd).next = (*tmp1).next;
(*tmp1).next = toAdd;
return;
}
tmp1 = (*tmp1).next;
tmp2 = (*tmp2).next;
}
}
你爲什麼遍歷整個列表來添加'tmpNode'到列表中?通常,當你有一個鏈表,並且你想添加一個節點時,你可以在前面添加它。這樣更有效率。順便說一下,「虛擬」不是一個好名字。像「頭」這樣的東西會更好。 –
可讀性提升:'(* tmp1).info'爲'tmp1-> info'等。 – 2013-06-04 12:31:00
Thenx爲您的答案。我通過它的ID字段將節點添加到他的位置 - 它需要按這種方式排序。 – user2451694