gpt4 book ai didi

c - 程序不返回 0。它有效但返回一个非常大的负数

转载 作者:太空宇宙 更新时间:2023-11-04 01:47:05 28 4
gpt4 key购买 nike

此代码在列表的开头插入节点。我编译了它并且它完美地工作,唯一的问题是该过程不返回 0 而是一个非常大的负数。我该如何解决这个问题?

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

typedef int data;

struct nodo
{
data el;
struct nodo *next;
};

typedef struct nodo *lista;


void inserisci_in_testa (lista *l, data el);

void print (lista temp1);



int main ()
{
lista l;
lista *s;
s=&l;
inserisci_in_testa(s,10);
inserisci_in_testa(s,1);
inserisci_in_testa(s,7);
print(l);
return 0;


}

void inserisci_in_testa (lista *l, data el)
{
lista p = malloc(sizeof(struct nodo));
p->el = el;
p->next = *l;
*l = p;
}

void print (lista temp1)
{
while (temp1!= NULL)
{
printf("%d ", temp1->el);
temp1 = temp1->next;
}
}

最佳答案

插入函数中的代码执行此操作:

p->el = el;
p->next = *l;

其中 l 包含您传入的列表头的地址。在初始节点插入时,该指针必须为 NULL(正确地表示一个空列表)。但是你的....

lista l;

l 没有确定的值。如果您希望它最初为 NULL,则必须这样说:

lista l = NULL;

这样做,您的程序就可以完成而不会出现运行时错误。

关于c - 程序不返回 0。它有效但返回一个非常大的负数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51743694/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com