C++中关于双向循环链表的问题?
类定义如下:class Node
{friend class CirDoubleNode<T>;
private:
Node<T>*left,*right;
T data;
};
template<class T>
class CirDoubleNode
{
public:
CirDoubleNode(void);
~CirDoubleNode(void);
bool IsEmpty(){return head==0;}
bool Find(int k,T&x)const;
int Length();//返回结点数目
CirDoubleNode<T>& Insert(int k,const T&x);
CirDoubleNode<T>& Delete(int k,T&x);
void Print()const;//正向输出
void ResPrint()const;//逆向输出
private:
Node<T>*head;//双向循环链表的头结点
};
template<class T>
CirDoubleNode<T>::CirDoubleNode()
{
head=0;
}
template<class T>
CirDoubleNode<T>::~CirDoubleNode()
{
Node<T>*next;
int index=0;
while(index<Length())
{
next=head->right ;
delete head;
head=next;
index++;
}
}
在析构函数中,删除结点好像出现问题,使用VS2010单步跟踪调试的过程中,在while循环中某次运行到while所在行的时候,会突然弹出黑框(也就是常见的那个cmd界面),我就纳闷了,我的析构函数里面有没有什么输入命令为什么弹出这个啊