链接列表程序仅打印列表的最后两个节点

问题描述

我写了一个程序来创建和打印单个链表。我已经使用结构指针来修改列表的结构指针。当我打印列表时,它仅打印添加的最后两个节点。

release: python3 manage.py makemigrations && python3 manage.py migrate
web: daphne domecode.asgi:application --port $PORT --bind 0.0.0.0 -v2
worker: python3 manage.py runworker channel_layer -v2 

每次,我在列表末尾附加5到6个节点,并且在打印列表时,它只会最后打印到添加的节点上。 我不知道add_end函数或print函数有问题。

解决方法

您的add_line例程错误地搜索了最后一个节点。 end变量是一个指向指针的指针,因此它在某种意义上等同于head参数,并且不是应该的临时值。将最后几行更改为以下内容:

void add_end(struct node **head){
    ...
    struct node *end = *head;
    while (end->next) {
           end = end->next;
           // Original line overwrites the 'head':  (*end)=(*end)->next;
    }
    end->next=temp;                        
}