#include<stdio.h>
#include<malloc.h>
struct node
{
int data;
struct node *next;
};
struct node* insert_beg(struct node *h,int x)
{
struct node *t;
printf("\n address = %u --- ",*h);
t=(struct node *)malloc(sizeof(struct node));
if(h==NULL)
{
t->data=x;
t->next=NULL;
h=t;
}
else
{
t->data=x;
t->next=h;
h=t;
}
return h;
}
void display(struct node *h1)
{
struct node *t=h1;
while(t->next!=NULL)
{
printf("%d->",t->data);
t=t->next;
}
}
int main()
{
struct node *p=NULL;
int a,ch=5;
while(ch--)
{
printf("\n Enter data");
scanf("%d",&a);
p=insert_beg(p,a);
display(p);
}display(p);
}
以上是在c。
中单个链接链接列表的开头插入元素的代码代码成功编译但是当我尝试插入元素时系统挂起...不找到错误。任何人都可以建议我需要做的修正。
下面提到的表达中是否有任何错误......需要帮助。
p=insert_beg(p,a);
答案 0 :(得分:1)
#include<stdio.h>
#include<malloc.h>
struct node
{
int data;
struct node *next;
};
struct node* insert_beg(struct node *h,int x)
{
struct node *t;
t=(struct node *)malloc(sizeof(struct node));
if(h==NULL)
{
t->data=x;
t->next=NULL;
h=t;
}
else
{
t->data=x;
t->next=h;
h=t;
}
return h;
}
void display(struct node *h1)
{
struct node *t=h1;
while(t->next!=NULL)
{
printf("%d->",t->data);
t=t->next;
}
printf("%d",t->data);
}
int main()
{
struct node *p=NULL;
int a,ch=5;
while(ch>=0)
{
printf("\n Enter data:-");
scanf("%d",&a);
p=insert_beg(p,a);
display(p);
ch--;
}
display(p);
}
答案 1 :(得分:0)
您输入错误:
printf("\n address = %u --- ",*h);
尝试打印整个结构。
通常按照here
的说明使用debbuger您可以使用以下调试信息编译程序:
gcc -o main -g main.c
在gdb中运行它:
gdb main
在gdb中输入'run'命令,如果失败,你可以使用'backtrace'来获取大量信息。熟悉gdb教程,因为manual可能会让你一开始就吓到你。
答案 2 :(得分:0)
while(t->next!=NULL)
应该是:
while(t!=NULL)
另外,您的插入功能可以简化为:
struct node* insert_beg(struct node *h,int x)
{
struct node *t;
t=(struct node *)malloc(sizeof(struct node));
t->data=x;
t->next=h;
return t;
}