c语言 - 无法为链表创建推送功能



经过googlestackoverflow的搜索数小时,终于无法发布一种明显的方法来为linked-listpush功能。

我想制作push功能,在特定linked-list结束时添加新node和新value。我最后一次努力如下所示,但它不起作用。

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

#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++.

这个循环是错误的,

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

您一次又一次地分配h->next。当h->nextNULL并且h->next->nextNULL时,这将是一个无限循环。

循环应为:

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

最新更新