C++链表问题,当运行到清除链表时,运行错误,错误如图:谢谢各位指导一下

删除链表的代码是://清除链表的全部数据voidlist::Clear(){Node*Temp_head=Head;if(Temp_head==0)return;do{N... 删除链表的代码是:
//清除链表的全部数据
void list::Clear()
{
Node *Temp_head=Head;
if (Temp_head==0) return;
do
{
Node *TEMP_NODE=Temp_head;
Temp_head=Temp_head->next;
delete TEMP_NODE;
}
while (Temp_head!=0);
}
//node是节点类
class Node
{
//声明list类为本类的友元类
friend class list;
private:
int Data; //节点数据
Node *previous; //前趋指针
Node *next; //后继指针
};
展开
 我来答
kaixingui2012
2013-02-11 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6396万
展开全部
你的当前代码没有问题,不知道你建表时的代码是什么样子
按你的程序,你建立的是个双向链表,但不知道是不是循环链表?即便不是循环链表,也不知道你的表尾是不是赋值为NULL(0)了
另,不知道你的Head是哪里定义的,在哪里进行的赋值,且其值是不是有效的NODE指针值?
因此,如果你这段代表出错,有可能是以上两个地方的问题造成的。
追问

不好意思,因为字数有限制,所以截了图,还请理解

追答
有点问题,终于看出来了
for( int i=1;i<=10;++i) //注意这里是分号,不是逗号,10+i会造成死循环,因此改成10

第二:
你的析构函数中会做Clear()操作
因此,你不应该再调用 list1.Clear()了
这样会造成重复释放内存,故会出错,先去掉这句!!
040630406
2013-02-10 · 超过42用户采纳过TA的回答
知道小有建树答主
回答量:292
采纳率:0%
帮助的人:137万
展开全部
析构函数中的 delete[] next; 注释掉。一般的程序都是在哪分配的内存,在哪释放,你的类内部没有为 Node<T>* next; 分配内存
追问
我的类怎么写才能够为Node * next;分配内存?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
壹骵虫
2013-02-11
知道答主
回答量:19
采纳率:0%
帮助的人:12.5万
展开全部
感觉你这个写的很诡异 我也不知道哪错了 你的 Node 只是双向链表的一个节点 你到底是想自己写个双向链表 还是直接用底层的链表呢...
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式