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

删除链表的代码是:
//清除链表的全部数据
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; //后继指针
};

你的当前代码没有问题,不知道你建表时的代码是什么样子
按你的程序,你建立的是个双向链表,但不知道是不是循环链表?即便不是循环链表,也不知道你的表尾是不是赋值为NULL(0)了
另,不知道你的Head是哪里定义的,在哪里进行的赋值,且其值是不是有效的NODE指针值?
因此,如果你这段代表出错,有可能是以上两个地方的问题造成的。追问

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

追答

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

第二:
你的析构函数中会做Clear()操作
因此,你不应该再调用 list1.Clear()了
这样会造成重复释放内存,故会出错,先去掉这句!!

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-02-10
析构函数中的 delete[] next; 注释掉。一般的程序都是在哪分配的内存,在哪释放,你的类内部没有为 Node<T>* next; 分配内存追问

我的类怎么写才能够为Node * next;分配内存?

第2个回答  2013-02-11
感觉你这个写的很诡异 我也不知道哪错了 你的 Node 只是双向链表的一个节点 你到底是想自己写个双向链表 还是直接用底层的链表呢...

C++链表问题 总是存在这么一个错误:error C2601: 'Add_word' : loca...
(上下寻早{与}是否漏缺```)这个错误一般都是这样的问题、

c++ 链表 删除各种情况节点问题。。。求教。。在线等。。。
一、结尾节点无法删除的问题,你可以想象一个只有三个节点的链表,结尾节点的ID=findid,开始时,p指向第二个节点,然后执行到第一个if时,由于p->next->ID==findid,于是执行第二个if语句,但是此时p->next->next是等于NULL的,所以删除节点的代码没被执行。二、当只有一个结点时,因为一开始定义...

c++ 链表,,求指导,程序崩溃,line:1044
链表的最后一个节点的next的值,是否设置为NULL了,如果没有设置,到了最后一个节点的时候,就会出现崩溃.你的链表中的每个节点的next值,是否都对了,如果有任一个节点的next没有指向有用的节点的话,就会访问不被允许访问的内存,导致崩溃.考虑下在进入循环的第一次是否就有问题,因为循环里,并没有判断p...

C++中销毁单链表的问题
{ LNode * p = L; LNode * t; while (p) { t = p->next; delete p; \/\/这里。删除当前p节点,下一步赋值为t(即p->next) p = t; }}

c++ 链表,,求指导,程序崩溃,line:1044
1.链表的最后一个节点的next的值,是否设置为NULL了,如果没有设置,到了最后一个节点的时候,就会出现崩溃.2.你的链表中的每个节点的next值,是否都对了,如果有任一个节点的next没有指向有用的节点的话,就会访问不被允许访问的内存,导致崩溃.3.考虑下在进入循环的第一次是否就有问题,因为循环里,并没...

C++程序,为什么编译通过了,执行时却出现错误
编译通过是因为你没有语法问题,运行出错是你的程序有逻辑问题,空指针,内存漏洞等程序问题

c++ MFC 里的链表问题(内详)
链表是一种数据结构,就像是一个一个的珠子串起来的链子,每个珠子就是一个结构体变量(当然这是C语言中的说法,要是是C++的话,每个珠子就是一个对象了),这种数据结构可以很方便地的访问每个元素,一般它是与数组相对的,数组是串行的,按照索引来访问元素,而链表是靠结构体中存储的下一个元素的...

C++编了一个简单的链表节点模版,运行时显示error lnk2019 无法解析的外 ...
不要把头文件和实现文件分开,也就是说,你把所有代码都放在一个文件里面。不要把类的声明和定义放在h中,又把成员函数的实现放在cpp 中。全部都放在一起,叫cpp或者hpp 就好。visual studio 对模板的分离编译不是很好,就出现连接错误。参考资料:个人经验 ...

c++链表问题
答:所以你的答案是对的,但是要注意过程。还有 s->link = new Node;的话结构是什么样的?是[25 | ? ] 还是 [25 | ]--->[ ? | ? ]?问号代表不知道 答:S->link的值发生改变,指向了一个新的内存区域。如果r=s->link会是什么样的结构?答:链表的结构就是图中所示了,...

C语言链表问题 DEVC++编译出error:too many arguments to functi...
你在main函数内声明了一个int deleteNode();函数,这个表明deleteNode函数是没有参数的。所以你后面的调用才出了问题。其实完全没有必要再声明的呀。

相似回答