| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 799 人关注过本帖
标题:单向链表程序 求助
取消只看楼主 加入收藏
韭菜
Rank: 2
等 级:论坛游民
帖 子:51
专家分:94
注 册:2010-9-26
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
单向链表程序 求助
程序编译没有问题   但是没有办法运行 【平台是VC6.0】
程序代码:
#include<stdio.h>
struct node
{
    int data;
    node *link;
};
struct list
{
    node *first,*last;
};
int insert(list a,int num)
{
    node *p=a.first;
    while(p!=NULL)    p=p->link;
    node *m;
    m->data=num;
    m->link=NULL;
    if(a.first==NULL)
    {
        m->link=a.first;
        if(a.first==NULL)    a.last=m;
        a.first=m;
    }
    else
    {
        m->link=p->link;
        if(p->link==NULL)    a.last=m;
        p->link=m;
    }
    return 0;
}

int show(const list a)
{
    node *p=a.first;
    while(p!=NULL)
    {
        printf("%d   ",&p->data);
        p=p->link;
    };
    return 0;
}

int main()
{
    list a;
    a.first=a.last=NULL;
    for(int i=0;i<4;i++)
        insert(a,i+1);
    show(a);
    return 0;
}




[ 本帖最后由 韭菜 于 2010-9-27 02:18 编辑 ]
搜索更多相关主题的帖子: 链表 
2010-09-27 01:42
韭菜
Rank: 2
等 级:论坛游民
帖 子:51
专家分:94
注 册:2010-9-26
收藏
得分:0 
经过2楼提醒  修改如下   但是  能不能请教一下  为什么一定要malloc呢      
程序代码:
#include<stdio.h>
#include<stdlib.h>
struct node
{
    int data;
    node *link;
};
struct list
{
    node *first,*last;
};
int show(list a);
int insert(list a,int num)
{
    node *p=a.first;
    while(p!=NULL)    p=p->link;
    node *m=(struct node *)malloc(sizeof(struct node));
    m->data=num;
    m->link=NULL;
    if(a.first==NULL)
    {
        a.last=m;
        a.first=m;
    }
    else
    {
        m->link=p->link;
        if(p->link==NULL)    a.last=m;
        p->link=m;
    }
    show(a);
    return 0;
}
int show(list a)
{
    node *p=a.first;
    while(p!=NULL)
    {
        printf("%d   ",&p->data);
        p=p->link;
    };
    return 0;
}
int main()
{
    list a;
    a.first=a.last=NULL;
    for(int i=0;i<4;i++)
    {
        insert(a,i+1);
    }
    show(a);
    return 0;
}


执行结果为:    1 2 3 4  Press any key to continue
这不是我要的结果啊  
我要的是 1    1 2    1 2 3   1 2 3 4     不停的更新显示链表

求助
2010-09-27 12:15
韭菜
Rank: 2
等 级:论坛游民
帖 子:51
专家分:94
注 册:2010-9-26
收藏
得分:0 
谢谢大家  尤其是 青衣修罗   谢谢  
我再看看文件头
程序代码:
#include<stdio.h>
#include<stdlib.h>
struct node
{
    int data;
    struct node *link;
};
struct list
{
    struct node *first,*last;
};
int show(struct list a);
int insert( struct list* a,int num)//这儿是需要传指针的,受教了 
{
    struct node *p=a->first;
    //while(p!=NULL)    p=p->link;//这是干什么的?  用来检错的
    struct node *m=(struct node *)malloc(sizeof(struct node));
    m->data=num;
    m->link=NULL;
    if(a->first==NULL)
    {
        a->last=m;
        a->first=m;
    }
    else//你原来写的要实现什么?   想插入表头的 
    {
       (a->last)->link=m;
        a->last=m;
        m->link=NULL;
    }
    show(*a);
    return 0;
}
int show(list a)
{
    struct node *p=a.first;
    while(p!=NULL)
    {
        printf("%d",p->data);
        p=p->link;
    };
    printf("  ");
    return 0;
}
int main()
{
    struct list a;
    a.first=a.last=NULL;
    for(int i=0;i<4;i++)
        insert(&a,i+1);
    system("pause");
    return 0;
}
2010-09-27 14:02
韭菜
Rank: 2
等 级:论坛游民
帖 子:51
专家分:94
注 册:2010-9-26
收藏
得分:0 
现在是从表头开始添加  其实只是改动了一点点   
程序代码:
#include<stdio.h>
#include<stdlib.h>
struct node
{
    int data;
    struct node *link;
};
struct list
{
    struct node *first,*last;
};
int show(struct list a);
int insert( struct list* a,int num)
{
    struct node *p=a->first;
    //while(p!=NULL)    p=p->link;
    struct node *m=(struct node *)malloc(sizeof(struct node));
    m->data=num;
    m->link=NULL;
    if(a->first==NULL)
    {
        a->last=m;
        a->first=m;
    }
    else
    {
       a->first=m;
        m->link=p;
    }
    show(*a);
    return 0;
}
int show(list a)
{
    struct node *p=a.first;
    while(p!=NULL)
    {
        printf("%d",p->data);
        p=p->link;
    };
    printf("  \n");
    return 0;
}
int main()
{
    struct list a;
    a.first=a.last=NULL;
    for(int i=0;i<4;i++)
        insert(&a,i+1);
    system("pause");
    return 0;
}


大家看看  能不能不是新建指针  而是结构体  行不

[ 本帖最后由 韭菜 于 2010-9-27 15:30 编辑 ]
2010-09-27 14:53
韭菜
Rank: 2
等 级:论坛游民
帖 子:51
专家分:94
注 册:2010-9-26
收藏
得分:0 
楼上的问题其实很简单
void insert(struct list a,int num) //a为实参,传的是值,如字符、整数....
void insert(struct list a,int num) //a为形参,传的是地址


2010-10-21 15:43
快速回复:单向链表程序 求助
数据加载中...
 
   



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

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