| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1390 人关注过本帖
标题:咋样吧插入好的链表数据显示出来,我的程序只能显示最后一个数据,貌似结点 ...
只看楼主 加入收藏
芳芳313
Rank: 1
等 级:新手上路
帖 子:8
专家分:5
注 册:2011-3-26
结帖率:0
收藏
已结贴  问题点数:20 回复次数:6 
咋样吧插入好的链表数据显示出来,我的程序只能显示最后一个数据,貌似结点指在最后一个数据处,咋让他回到开头啊
#include<stdio.h>
#include<malloc.h>
typedef struct  node
{
    int data;
    struct node *next;
}NODE;
void Insert(NODE **p_head,int a,int b)
{
    NODE *p,*q;
    q=(NODE*)malloc(sizeof(NODE));
    q->data=b;
    q->next=NULL;
    if(*p_head==NULL)
        *p_head=q;
    else
    {
        p=*p_head;
        while(p->data!=a&&p->next!=NULL)
          p=p->next;
        p->next=q;
    }
}
void main()
{
    int i,m,n,x;
    printf("请输入数据个数:\n");
    scanf("%d",&n);
    NODE *head,*p,*q;
    if(n==0)
        printf("链表数据个数不能为空!");
    head=(NODE*)malloc(sizeof(NODE));
    p=head;
    printf("请输入数据:\n");
    for(i=1;i<=n-1;i++)
    {
        scanf("%d",&(p->data));
        q=(NODE*)malloc(sizeof(NODE));
        p->next=q;
        p=q;
    }
    scanf("%d",&(p->data));
    p->next=NULL;
    printf("请输入你要插入的位置:\n");
    scanf("%d",&m);
    printf("请输入你要插入的数:\n");
    scanf("%d",&x);
    Insert(&head,m,x);
    for(i=0;i<n+1;i++)
    {
        printf("%d ",(p->data));
    }
}
搜索更多相关主题的帖子: include while 
2011-03-29 22:46
shinan77
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:87
专家分:188
注 册:2010-9-24
收藏
得分:4 
楼主,以后建议你用stdlib.h这个头文件,不要用malloc.h。很不理解你···为什么定义NODE **p_head而不是NODE *p_head,还嫌不够麻烦?
你想遍历整个链表,就要让p指针指向链表的头结点head!!!

--------将学到的东西为我所用,这才是学习的目的 --------
2011-03-29 22:53
芳芳313
Rank: 1
等 级:新手上路
帖 子:8
专家分:5
注 册:2011-3-26
收藏
得分:0 
初学者,不知道该咋做,还望多指点指点
2011-03-30 17:01
q1826050194
Rank: 2
等 级:论坛游民
帖 子:67
专家分:19
注 册:2011-3-7
收藏
得分:4 
回复 楼主 芳芳313
#include<stdio.h>
#include<malloc.h>
typedef struct  node
{
    int data;
    struct node *next;
}NODE;
void Insert(NODE **p_head,int a,int b)
{
    NODE *p,*q;
    q=(NODE*)malloc(sizeof(NODE));
    q->data=b;
    if(*p_head==NULL)
        *p_head=q;
    else
    {
        p=*p_head;
        while(p->data!=a&&p->next!=NULL)
          p=p->next;
          q->next=p->next; //这里要用这两步才能把元素插进去,你不写这两部是插不进去的
        p->next=q;         //
    }
}
int main()
{
    int i,m,n,x;
    printf("请输入数据个数:\n");
    scanf("%d",&n);
    NODE *head,*p,*q;
    if(n==0)
        printf("链表数据个数不能为空!");
    head=(NODE*)malloc(sizeof(NODE));
    p=head;
    printf("请输入数据:\n");
    for(i=1;i<=n-1;i++)
    {
        scanf("%d",&(p->data));
        q=(NODE*)malloc(sizeof(NODE));
        p->next=q;
        p=q;
    }
    scanf("%d",&(p->data));
    p->next=NULL;
    printf("请输入你要插入的位置:\n");
    scanf("%d",&m);
    printf("请输入你要插入的数:\n");
    scanf("%d",&x);
    Insert(&head,m,x);
    p=head;
        for(i=0;i<n+1;i++)
    {
   
        printf("%d ",(p->data));
           p=p->next;//它每输出一个数,就会移一个内存,输出
    }
    return 0;
}
希望这能帮到你···
2011-03-30 18:05
newshou
Rank: 2
等 级:论坛游民
帖 子:10
专家分:28
注 册:2010-12-12
收藏
得分:4 
一般而言,我们都是另外定义一个结构体储存。
如。
struct LHead
{
int Legh;//储存表长
node FirstHead;//储存表头
。。。。。。
}

因为这些东西在不注意的时候丢失,是很呕心的。
2011-03-30 18:16
sanye2010
Rank: 2
等 级:论坛游民
帖 子:23
专家分:41
注 册:2011-3-29
收藏
得分:4 
还有一点:
void Insert(NODE **p_head,int a,int b)
{
    NODE *p,*q;
    q=(NODE*)malloc(sizeof(NODE));
    q->data=b;
    if(*p_head==NULL)
        *p_head=q;
    else
    {
        p=*p_head;
        while(p->data!=a&&p->next!=NULL)//插入一个新节点的条件相等吗,还是按位置插入啊
          p=p->next;
          q->next=p->next; //这里要用这两步才能把元素插进去,你不写这两部是插不进去的
        p->next=q;         //
    }
}

-----跳---->我跳--->我跳----->我再跳-------->掉坑里了吧(!)------c语言就这样。
2011-03-30 19:12
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:4 
p = head;
    while(p->next)
    {
        printf("%s",p->data);
        p = p->next;
    }

就可以历遍了

                                         
===========深入<----------------->浅出============
2011-03-30 19:17
快速回复:咋样吧插入好的链表数据显示出来,我的程序只能显示最后一个数据,貌似 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018466 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved