程序在单个链表

时间:2016-12-19 15:22:59

标签: c data-structures linked-list

#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);

3 个答案:

答案 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;
}