簡體   English   中英

在雙圓形鏈表的末尾插入節點

[英]Inserting node at the end of a double, circular linked list

我正在編寫一個程序,在雙循環鏈表上執行各種操作。 所有其他功能都運行良好,但在努力之后,我無法理解為什么我的程序在執行insert_end()函數時被終止。 功能是:

    void list::insert_end()
     {  int data;
         node*temp,*p;
         if(start==NULL)
        cout<<"CREATE list first!:"<<endl;
        else
        { cout<<"enter data to enter in a node after the last node:"<<endl;
          cin>>data;
          temp=new node(data);
          while(p->next!=start)
         { p=p->next;
         } // now p points to last node of doubly,circular list!! i.e. the linked list is traversed till p's next pointer points to start
           temp->pre=p;
          temp->next=p->next;
          p->next->pre=temp;
          p->next=temp;
          display();
        }
      }

這是一個菜單驅動的程序。

請幫我看看insert_end函數..我是初學者...

你有一個未初始化的指針p在這里聲明:

node*temp,*p;

你在這里取消引用它,盡管沒有將它設置為任何值:

while(p->next!=start)

也許你想添加p=start; 讓它從第一個節點開始。

請注意,如果您有一個雙向鏈接循環列表,那么您不需要循環來查找最后一個節點:最后一個節點是第一個節點之前的節點,即start->pre

您沒有初始化節點指針p

在到達while循環之前,需要將p設置為列表的起始節點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM