在第一个错误C程序中插入双重链接列表

时间:2018-05-15 15:24:44

标签: c

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

typedef struct node{
    struct node *next;
    struct node *prev;
    int value;
}node;

node* insert_first(node*head,int val){
    if (head==NULL){
        node *temp=(node*)malloc(sizeof(node));
        temp->prev=NULL;
        temp->next=NULL;
        head=temp;
    }
    else{
        node *temp=(node*) malloc(sizeof(node));
        temp->value=val;
        temp->prev=NULL;
        temp->next=head;
        head->prev=temp;
        head=temp;

    }
        return head;
}

void print_node(node *head){
    node *compteur = head;
    printf("list is :");
    while(compteur != NULL){
        printf("%d ",compteur->value);
        compteur = compteur->next;
    }
}

void main(){
    node *head =NULL;
    head = insert_first(head,1);


    print_node(head);
}

我试图在第一个位置插入一个元素。 当我尝试插入2个或更多元素并打印它们时,代码有效(期望第一个元素)。 当我尝试仅插入1个元素然后打印它时,我遇到了问题。

2 个答案:

答案 0 :(得分:0)

我想问题出现在以下逻辑中:

while (compteur != NULL) {
    compteur = compteur - > next;
    printf("%d ", compteur - > value);
  }

您正在将compteur指向下一个,然后尝试打印该值。它应该是

while (compteur != NULL) {
    printf("%d ", compteur - > value);
    compteur = compteur - > next;
  }

答案 1 :(得分:0)

在条件if (head==NULL){下,您没有进行作业

 temp->value=val;

因此,对于第一个元素值可能是垃圾。