我在教科书上找到的在C中使用链表的示例遇到了一些问题。
startlist
是int
值的链接列表,这段代码应该检查每个int
值,如果它小于X
,则将其放入lowlist
,如果大于X
,则将其放入highlist
。
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;
和
highList = tempList;
为什么它们是必要的?
显然,lowList
和highList
分别包含链表的最低和最高节点。
线条
tempList->next = lowList;
和
tempList->next = highList;
将tempList
的下一个元素分别设置为最低元素和最高元素。
您正在谈论的行将tempList
设置为新的最低/最高节点。 tempList
现在是第一个/最后一个元素,指向旧的头部/尾部。
整个循环是关于以排序方式将新节点前置/附加到链表中。