双链表第一次插入错误C程序 #包括 #包括 类型定义结构节点{ 结构节点*下一步; 结构节点*prev; int值; }节点; 节点*首先插入(节点*头部,int val){ if(head==NULL){ node*temp=(node*)malloc(sizeof(node)); temp->prev=NULL; temp->next=NULL; 压头=温度; } 否则{ node*temp=(node*)malloc(sizeof(node)); 温度->值=val; temp->prev=NULL; 温度->下一步=头部; 压头->上一个=温度; 压头=温度; } 回流头; } 无效打印节点(节点*头){ 节点*compteur=头部; printf(“列表为:”); while(compteur!=NULL){ printf(“%d”,编译器->值); 编译器=编译器->下一步; } } void main(){ node*head=NULL; 头部=首先插入_(头部,1); 打印节点(头部); }

双链表第一次插入错误C程序 #包括 #包括 类型定义结构节点{ 结构节点*下一步; 结构节点*prev; int值; }节点; 节点*首先插入(节点*头部,int val){ if(head==NULL){ node*temp=(node*)malloc(sizeof(node)); temp->prev=NULL; temp->next=NULL; 压头=温度; } 否则{ node*temp=(node*)malloc(sizeof(node)); 温度->值=val; temp->prev=NULL; 温度->下一步=头部; 压头->上一个=温度; 压头=温度; } 回流头; } 无效打印节点(节点*头){ 节点*compteur=头部; printf(“列表为:”); while(compteur!=NULL){ printf(“%d”,编译器->值); 编译器=编译器->下一步; } } void main(){ node*head=NULL; 头部=首先插入_(头部,1); 打印节点(头部); },c,C,我试图在第一个位置插入一个元素。 当我尝试插入2个或多个元素并打印它们时(第一个元素除外),代码会起作用。 当我尝试只插入一个元素然后打印它时,我遇到了一个问题。我想问题在于以下逻辑: #include <stdio.h> #include <stdio.h> typedef struct node{ struct node *next; struct node *prev; int value; }node; node* insert_fir

我试图在第一个位置插入一个元素。 当我尝试插入2个或多个元素并打印它们时(第一个元素除外),代码会起作用。
当我尝试只插入一个元素然后打印它时,我遇到了一个问题。

我想问题在于以下逻辑:

#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);
}
您将计算机指向下一个,然后尝试打印值。应该是

while (compteur != NULL) {
    compteur = compteur - > next;
    printf("%d ", compteur - > value);
  }
在条件
下,如果(head==NULL){
您没有执行赋值

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

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

欢迎使用SO。你说的“我有问题”是什么意思?编译器是否在抱怨?如果是,它说了什么?或者程序没有做它应该做的事情?如果是,预期的行为和实际的行为是什么?您忘记了
#包含
,它不是
->
,而是
->
(在
-
之间没有空格),
insert\u first
不返回值,在
main
的第一行,您使用
head
而它尚未初始化,
new\u node
函数完全是胡说八道,当然还有一些问题。在“insert\u furst()”和“new\u node(”中有错误'函数。看看你用头指针做了什么。这是我编辑完你们告诉我要编辑的所有内容后得到的结果:当头==null时,你不能先在insert_中赋值。你应该添加行
temp->value=val;
谢谢你回答我编辑后得到的答案that@HaythemTarchouna这是你期望的吗?
 temp->value=val;