| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 519 人关注过本帖
标题:这个单链表为什么错了。
只看楼主 加入收藏
lyv3kiki
Rank: 1
等 级:新手上路
帖 子:13
专家分:5
注 册:2010-4-11
结帖率:25%
收藏
已结贴  问题点数:10 回复次数:4 
这个单链表为什么错了。
就是简单的单链表输入输出,为什么运行时会错误?
#define NULL 0
#define OK 1
typedef int status;
typedef struct LNODE{
    int data;
    struct LNODE * next;
}LNODE;
status  ListInit(LNODE *l,int n)
{
    int w;
    LNODE  *p,*tail;
    l=(LNODE *)malloc(sizeof(LNODE));
    l->next=NULL;
    tail=l;for(w=0;w<n;w++)
    {
        p=(LNODE *)malloc(sizeof(LNODE));
        cin>>p->data;
        tail->next=p;
        tail=p;
    }
    tail->next=NULL;
  
    return OK ;
}
///////////////////////////////////////////////////////////////
void main()
{   
    LNODE *l;
    int n,t;
    cin>>n;
    ListInit(l,n);
    for(t=0;t<n;t++)
    {
        
        cout<<l->next->data;
        l->next=l->next->next;
    }
}
搜索更多相关主题的帖子: 单链 
2010-04-27 20:16
Kid_X
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:216
专家分:515
注 册:2007-10-8
收藏
得分:5 
ListInit(l,n);
这一句有问题。c++中函数调用是传值的,所以,这个函数执行后,变量l的值根本没有改变,也就没有指向链表的头节点。
可以考虑把函数形式改为status ListInit(LNODE **l, int n);
调用时使用ListInit(&l, n);
当然,函数体中有些地方要相应的改一下。
2010-04-27 20:30
chichu
Rank: 2
来 自:安徽阜阳
等 级:论坛游民
帖 子:71
专家分:89
注 册:2010-4-14
收藏
得分:5 
加三个包含头文件
#include <iostream.h>
#include <string.h>
#include <stdlib.h>

有了目标才有动力!!!
2010-04-27 20:31
lyv3kiki
Rank: 1
等 级:新手上路
帖 子:13
专家分:5
注 册:2010-4-11
收藏
得分:0 
头文件都定义了, 关于二楼,我传的是指针啊,L我给定义成指针了
2010-04-27 20:46
Kid_X
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:216
专家分:515
注 册:2007-10-8
收藏
得分:0 
LZ,你传的参数是指针类型的变量,而不是变量的指针,这是两个不同的概念,你自己好好体会一下。这个东西一开始挺难理解的。


[ 本帖最后由 Kid_X 于 2010-4-27 21:08 编辑 ]
2010-04-27 21:07
快速回复:这个单链表为什么错了。
数据加载中...
 
   



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

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