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



此代码在列表的开头插入节点。我编译了它,它运行良好,唯一的问题是该过程不返回 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;

这样做,程序完成,没有运行时错误。

相关内容

  • 没有找到相关文章

最新更新