读书人

进来看看这个简单的程序,该怎么解决

发布时间: 2012-03-14 12:01:13 作者: rapoo

进来看看这个简单的程序
想实现数据结构中的一个程序
程序结果是返回链表长度

#include <iostream.h>
#include <stdio.h>
#include <malloc.h>

#define MAXSIZE 100

struct LNode
{
char date;
LNode *next;
};

int ListLength(LNode *L);

int main()
{
int Length;
char string[] = { "The ListLength Programme "};
LNode *LinkList;
LinkList = (LNode *) malloc (MAXSIZE*sizeof(LNode));

if(!LinkList)
{
cout < < "malloc space error! " < <endl;
return 0;
}

Length = ListLength(LinkList);
cout < < "The String Length is " < <Length < <endl;
return 0;
}

int ListLength(LNode *L)
{
int Length;
LNode *p;

p = L;
while(p)
{
Length++;
p = p-> next;
}
return Length;
}

编译连接都没问题 运行时内存错误
请各位帮帮看原因在哪

[解决办法]
LinkList = (LNode *) malloc (MAXSIZE*sizeof(LNode));
......
Length = ListLength(LinkList); //先对 LinkList 进行适当的赋值
cout < < "The String Length is " < <Length < <endl;
return 0;
}
[解决办法]
#include <stdio.h>
#include <malloc.h>

#define MAXSIZE 100

struct LNode
{
char date;
LNode *next;
};

int ListLength(LNode *L)
{
LNode *p;
int Length=0; //这里要赋初值为0,才能计数
p = L;
while(p)
{
Length++;
p = p-> next;
}
return Length;
}

int main()
{
int Length;
char string[] = { "The ListLength Programme "};
LNode *LinkList;
LinkList = (LNode *) malloc (sizeof(LNode));//作为表头结点
if(!LinkList)
{
cout < < "malloc space error! " < <endl;
return 0;
}
LinkList-> next=NULL; //如果这里不指向空,
//ListLength函数中的p=p-> next出问题

Length = ListLength(LinkList);
cout < < "The String Length is " < <Length < <endl;
return 0;
}

读书人网 >C++

热点推荐