双链表第一次插入错误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); 打印节点(头部); }
我试图在第一个位置插入一个元素。 当我尝试插入2个或多个元素并打印它们时(第一个元素除外),代码会起作用。双链表第一次插入错误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
当我尝试只插入一个元素然后打印它时,我遇到了一个问题。我想问题在于以下逻辑:
#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;