C语言 什么可能是我的运行时错误的原因,而显示我的链表


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

定义结构

typedef struct node{
char name[20];
struct node *next;
}Node;
Node *head = NULL;
void insert ();
int main (){
Node *student1, *student2;
Node *walker;
int i;
head = (Node*)malloc(sizeof(Node));
for (i=0; i<3; i++) insert();
walker = head;
while(walker != NULL){
    printf ("%sn", walker->name);
    walker = walker->next;  
}
return 0;

这个循环工作得很好,但是在程序崩溃之前在最后添加了一些垃圾

}

在开头插入新节点

void insert(){
Node* nn;
nn = (Node*)malloc(sizeof(Node));
printf ("Name: ");
scanf ("%s", nn->name);
nn->next = head;
head = nn;
return;
}

由于head->next未初始化,因此链表末尾没有空终止符。这将导致未定义的行为。

/* In main() */
head = malloc(sizeof(Node));
head->next = NULL;

相关内容

  • 没有找到相关文章

最新更新