リンクされたリストの 3 つのノードを作成する C の関数があります。問題は、関数が余分なノードを追加しているように見え、エラーを見つけられないことです。誰かが出力とコードを見て、私のエラーを教えてもらえますか? 問題は仮想マシンのコンパイル環境にあるのでしょうか? BackTrack Linux を実行している仮想マシンで次のコードをコンパイルしています。
gcc link.c -o リンク
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define DELIMITER ,
struct node {
int data;
struct node *next;
};
struct node* create()
{
//define head pointers
struct node *head = NULL;
struct node *second = NULL;
struct node *third = NULL;
//allocate memory
head = malloc(sizeof(struct node));
second = malloc(sizeof(struct node));
third = malloc(sizeof(struct node));
//setup fields
//assign links
head->data = 15;
head->next = second;
second->data = 20;
second->next = third;
third->data = 25;
third->next = NULL;
return head;
}
int main(int argc, const char *argv[])
{
int size;
struct node *head;
head = create();
struct node *curr = head;
while(curr->next != NULL)
{
printf("%d\n", curr->data);
curr++;
}
return 0;
}
これは出力です:
15 0 20 0