我的代码出了什么问题?每次运行它都会崩溃

时间:2016-01-07 14:27:22

标签: c linked-list

我尝试编写代码来实现并使用for循环打印链接列表。但是我的代码给出了运行时错误。我跑的时候会崩溃。

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

struct node
{
   int info;
   struct node *next;
   struct node *prev;
}var;

int main()
{
   struct node head;
   head.prev=NULL;
   struct node *temp;
   int i;

   for(i=1;i<5;i++)
   {
      struct node *new=malloc(sizeof(var));
      temp->info=i;
      temp->next=new;
      new->prev=temp;
      temp=new;
   }

   for(i=1;i<=5;i++)
   {
      printf("%d ",temp->info);
   }

   return 0;
}

1 个答案:

答案 0 :(得分:1)

首先,您必须使用head.next初始化head.prev

head.info = 0;
head.prev=NULL;
head.next=NULL;

您还必须初始化指针temp。指针应该在开始时引用head:

struct node *temp = &head;

像这样调整你的循环:

for( int i=1;i<5;i++)
{
    temp->next = malloc(sizeof(var)); // allocat new nod right on target
    temp->next->info=i;               // set data on new node
    temp->next->prev = temp;          // predecessor of successor is temp
    temp = temp->next;                // one step forward
    temp->next = NULL;                // successor of last node is NULL
}

要打印节点列表,请使用while循环,从头向前迈出一步:

temp = &head;
while( temp != NULL )
{
    printf("%d ",temp->info);
    temp = temp->next; // one step forward
}