【问题标题】:Unable to make push function for linked-list无法为链表创建推送功能
【发布时间】:2021-09-18 22:37:29
【问题描述】:

googlestackoverflow中搜索了好几个小时,最后还是无法发布一个明显的方法来制作push linked-list 的 strong> 函数。

我想制作 push 函数,在特定 的末尾添加新的 node 和新的 value >linked-list。我的最后一次尝试如下所示,但它不起作用。

我在哪里犯了错误,我该如何解决?

#include <stdio.h>
#include <stdlib.h>

struct node{
    int value;
    struct node *next;
};

typedef struct node node_t;

void push(node_t *h, int val){

    //copy value head
    node_t *copy;
    copy = h;

    //reach to last node
    while(copy->next != NULL)
        copy = h->next;

    //make new node and value "val"
    copy->next = malloc(sizeof(node_t));
    copy->next->next = NULL;
    copy->next->value = val;
}

int main(){

    node_t h;

    h.next = NULL;
    push(&h, 100);
    push(&h, 200);
    push(&h, 300);

    printf("%d", h.next->value);
    return EXIT_SUCCESS;
}

附加信息:
它已正确编译,但没有运行。
我使用 TDM-GCCC 语言而不是 C++

【问题讨论】:

    标签: c linked-list


    【解决方案1】:

    这个循环是错误的,

        //reach to last node
        while(copy->next != NULL)
            copy = h->next;
    

    您一次又一次地分配h-&gt;next。当h-&gt;next 不是NULL 并且h-&gt;next-&gt;next 不是NULL 时,这将是一个无限循环。

    循环应该是:

        //reach to last node
        while(copy->next != NULL)
            copy = copy->next;
    

    【讨论】:

    • 感谢您的回答,但我的程序仍然无法运行!
    • @PoyalPaxicam It works. 成功打印出第一个节点的值。
    • 对我来说它什么也没打印!
    • @PoyalPaxicam 检查您是否正在编译和运行预期的最新代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-09
    • 1970-01-01
    • 1970-01-01
    • 2014-12-19
    • 2019-01-01
    • 1970-01-01
    • 2012-10-25
    相关资源
    最近更新 更多