【发布时间】:2014-03-10 20:57:21
【问题描述】:
我得到了我的链表:
typedef struct t_node {
ELEMLIST data;
struct t_node *next;
} NODE;
typedef NODE *LIST;
我尝试以有序的方式插入整数(从小到大),但似乎有些东西不起作用:
STATUS insertInOrderList(LIST *list, const ELEMLIST *pElem) {
NODE *newNode, *nodeIns;
newNode = getNode();//allocate memory
nodeIns = getNode();
//checkout getnode return
newNode->data = *pElem;
for (nodeIns = *list; nodeIns != NULL; nodeIns = nodeIns->next) {
if (cmpEleList(&newNode->data, &nodeIns->data) != 1) {
//if arg1 is not > arg2 it breaks the loop
break;
}
}
newNode->next = nodeIns;
nodeIns->next = newNode;
return OK;
}
当我运行它时,它只是告诉我我的列表是空的......
我确定这只是我错过了一些细节,但我就是不知道是什么
【问题讨论】:
-
nodoIns或nodeIns? -
不相关:对于这个世界上所有美好的事物(而且并不多),请不要在 typedef 中隐藏指针,除非 (a) 您正在编写一个 API 并抽象出一个“句柄”类型,或者 (b) 你正在声明一个函数指针类型。我是 C。拥抱星号,对他们耳语甜言蜜语。他们应该坐在前排。
-
已编辑,反正不是问题
-
哦,我知道不是。但它让您要求的人对此进行审查。不用担心,只是一个(强烈的)建议。反正。你做错事的第一个提示是双重
getNode()。您正在插入一个节点,所以这本身就是一个很大的危险信号。
标签: c linked-list malloc