我在教科书上找到一个在C中使用链接列表的例子时遇到了一些问题。
startlist
是int
值的链接列表,这段代码应检查每个int
值,如果小于{{1,则将其放入lowlist
如果它大于X
,则为highlist
。
X
我不明白这些界限:
while(startList != NULL){
if (startList->value < X){
tempList = (List) malloc(sizeof(Item));
tempList->value = startList->value;
tempList->next = lowList; lowList = tempList;
}
else{
tempList = (List) malloc(sizeof(Item));
tempList->value = startList->value;
tempList->next = highList; highList = tempList;
}
startList = startList->next;
}
和
lowList = tempList;
为什么他们有必要?
答案 0 :(得分:0)
显然,lowList
和highList
分别包含链接列表的最低和最高节点。
行
tempList->next = lowList;
和
tempList->next = highList;
将tempList
的下一个元素分别设置为最低和最高元素。
您正在谈论的行将tempList
设置为新的最低/最高节点。 tempList
现在是第一个/最后一个元素,指向旧的头/尾。
整个循环是以排序的方式将新节点预先添加/附加到链表。