以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 C/C++编程思想 』  (http://bbs.xml.org.cn/list.asp?boardid=61)
----  线性表的链式存储,无法输出元素  (http://bbs.xml.org.cn/dispbbs.asp?boardid=61&rootid=&id=40937)


--  作者:fangel2000
--  发布时间:12/6/2006 10:21:00 PM

--  线性表的链式存储,无法输出元素
原代码如下:编译能通过,运行出现问题.VC6.0环境下调试.
#include <iostream.h>
struct Lnode
{
 int data;
 Lnode *next;
};

void InitialList(Lnode *L0)      //初始化一个长度为6的线性表L0
{
 L0 = new Lnode;      //作为头节点
 if(!L0)
  cout<<"there is not enough space"<<endl;
 else
  L0->next = NULL;
 for(int i = 0; i < 6; i++)
 {
  Lnode *s = new Lnode;
  s->data = 2*i;
  s->next = L0->next;
  L0->next = s;      //以上两行为插入各个节点
 }
}

void print(Lnode *L0)       //输出线性表中的每个元素
{
 Lnode *p,*q;
 q = L0;
 p = q->next;
 while(p)
 {
  cout<<p->data<<" ";          //打印出每个元素
  p = p->next;
 }
}

void main()
{
 Lnode *L = NULL;
 InitialList(L);
 print(L);
}
有没有高手知道是为什么呢.


--  作者:卷积内核
--  发布时间:12/7/2006 8:39:00 AM

--  
//你所用的L根本就没有被初始化,print(L)中的L里面什么都没有怎么会能输出东西呢?

下面是改正后的:

#include <iostream.h>
struct Lnode
{
 int data;
 Lnode *next;
};

Lnode InitialList(Lnode *L0)      //初始化一个长度为6的线性表L0
{
 L0 = new Lnode;      //作为头节点
 if(!L0)
  cout<<"there is not enough space"<<endl;
 else
  L0->next = NULL;
 for(int i = 0; i < 6; i++)
 {
  Lnode *s = new Lnode;
  s->data = 2*i;
  s->next = L0->next;
  L0->next = s;      //以上两行为插入各个节点
 }
 return *L0;
}

void print(Lnode *L0)       //输出线性表中的每个元素
{
 Lnode *p,*q;
 q = L0;
 p = q->next;
 while(p)
 {
  cout<<p->data<<" ";          //打印出每个元素
  p = p->next;
 }
}

void main()
{
 Lnode *L1 = NULL;
 Lnode L = InitialList(L1);
 print(&L);
}


--  作者:fangel2000
--  发布时间:12/7/2006 10:46:00 AM

--  
呵呵,非常感谢卷积内核,又帮了我一次
C基础差了一点,呵呵加紧补习
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
61.523ms