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