#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个元素然后打印它时,我遇到了问题。
答案 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;
因此,对于第一个元素值可能是垃圾。