2
#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 ("%s\n", 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;
}
4

1 に答える 1

4

は初期化されていないためhead->next、リンクリストの最後にnullターミネータはありません。これにより、未定義の動作が発生します。

/* In main() */

head = malloc(sizeof(Node));
head->next = NULL;
于 2013-03-27T12:06:52.117 に答える