大家帮看看这个连表有什么错误

gooderfeng 2005-03-25 10:00:11
#include<iostream>
#include<cassert>
using namespace std;
typedef struct nodeType
{
int info;
struct nodeType* link;
};
nodeType* buildList()
{
nodeType* first, * newNode, *last;
int num;
cout<< "enter integer"<< endl;
cin>> num;
first = NULL;
while(num != -999)
{
newNode = new nodeType;
assert(newNode != NULL);
newNode->info = num;
//cout<< num<< endl;
newNode->link = NULL;
if (first = NULL)
{
cout<< "feng"<< endl;
first = newNode;
last = newNode;
}
else
{
last->link = newNode;
last = newNode;
}
cin>> num;
}
return first;
}

int main(void)
{
buildList();
return 0;
}
...全文
57 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
gooderfeng 2005-03-25
  • 打赏
  • 举报
回复
谢谢大家,应该是没有初始化的问题.
justioo 2005-03-25
  • 打赏
  • 举报
回复
首先,
typedef struct nodeType
{
int info;
struct nodeType* link;
};
后并没有接 类型别名,可把 typedef去掉,否则会产生一个警告;

其次
nodeType* first, * newNode, *last;
没有分配内存
可以改为
nodeType * first=(nodeType*)malloc(sizeof(nodeType)),
* newNode=(nodeType*)malloc(sizeof(nodeType)),
*last=(nodeType*)malloc(sizeof(nodeType));

还有,
你的while(num != -999)这是不太规范的,可以改成其他结束标志(当然,也不一定要改)


修改后的程序:
#include<iostream>
#include<cassert>
#include<malloc.h>
using namespace std;
struct nodeType
{
int info;
struct nodeType* link;
};
nodeType* buildList()
{
nodeType* first=(nodeType*)malloc(sizeof(nodeType)),
* newNode=(nodeType*)malloc(sizeof(nodeType)),
*last=(nodeType*)malloc(sizeof(nodeType));
int num;
cout<< "enter integer"<< endl;
cin>> num;
first = NULL;
while(num != -999)
{
newNode = new nodeType;
assert(newNode != NULL);
newNode->info = num;
//cout<< num<< endl;
newNode->link = NULL;
if (first = NULL)
{
cout<< "feng"<< endl;
first = newNode;
last = newNode;
}
else
{
last->link = newNode;
last = newNode;
}
cin>> num;
}
return first;
}

int main(void)
{
buildList();
return 0;
}
在vc++ 6.0上通过
gooderfeng 2005-03-25
  • 打赏
  • 举报
回复
delete需要的时候在main里面delete
我就感觉很怪,我在书上看到的这个程序.
我测试一下不好用.
能给具体解释一下
到底那里很不好用啊.
first=newNode;应该是可以的.
bing_huo 2005-03-25
  • 打赏
  • 举报
回复
只看到new 没看到delete

还有
first = newNode;
last = newNode;

这种赋值好象也有问题。。。找本数据结构的书仔细看看吧。。。!~

64,644

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧