我在教科书上找到了一个示例,在使用C中的链接列表时遇到了一些问题。

startlistint值的链接列表,这段代码应检查每个int值,如果小于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;




        highList = tempList;


为什么有必要?

最佳答案

显然,lowListhighList分别包含链表的最低和最高节点。

线

tempList->next = lowList;




tempList->next = highList;


tempList的下一个元素分别设置为最低和最高元素。

您正在讨论的行将tempList设置为新的最低/最高节点。 tempList现在是第一个/最后一个元素,指向旧的头/尾。

整个循环是关于以排序方式将新节点添加/添加到链表中。

关于c - C示例中的链接列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35012866/

10-11 15:23