这个函数获得一个指向该列表的“虚拟”项(第一项)和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