注册 登录
编程论坛 C++教室

新手求问一个双向链表的问题

winnerterry 发布于 2012-12-05 13:05, 184 次点击
双向链表析构的时候出错了, 找了半天没找出来,
代码如下:
class DLinkedLIST
{
    struct NODE
    {
        char        *Data;
        struct NODE *pPre;
        struct NODE *pNext;
        NODE(const char *D) : pPre(), pNext()
        {
            if(D == NULL)
            {
                Data = new char[1];
                *Data = '\0';
            }
            else
            {
                Data = new char[strlen(D) + 1];
                strcpy(Data, D);
            }
        }
        ~NODE(void)
        {
            delete[] Data;
        }
    };
    NODE *Head;
public:
    DLinkedLIST(void):Head() {}
    ~DLinkedLIST(void) { Destroy(); }
        bool Destroy(void)
    {   
      NODE *Temp = Head;  
      printf("开始销毁链表...\n");   
      while(Head)
      {   
        Head = Head->pNext;  
        delete Temp;
            Temp = Head;  
      }  
      Temp = NULL;
      delete Head;
      Head = NULL;  
      printf("销毁成功!\n");  
      return true;
    }
1 回复
#2
yuccn2012-12-05 13:46
bool Destroy(void)
     {   // 请确保Head是初始化了的
       NODE *Temp = NULL; // Head;  
       printf("开始销毁链表...\n");   
      while(Head)
       {   
         Temp = Head;
         Head = Head->pNext;  
         delete Temp;
         Temp =NULL;  
       }  
       //Temp = NULL;
       //delete Head;
       //Head = NULL;
  
       printf("销毁成功!\n");  
       return true;
     }
1