2012-05-13 72 views
1
class List { 
    ListNode *head; 
    ListNode *prev; 
}; 

class ListNode { 
    int data; 
    ListNode *next; 
    friend class List; 
    ListNode(int d, ListNode *n) : data(d), next(NULL) {} 
    void insertM(int d) { 
    ListNode *ptr, *temp, *curr; 
    ptr = head; 
    while (ptr->data < d) { 
     prev = ptr; 
     ptr = ptr->next; 
    } // end while 
    temp = prev->next; 
    curr = new ListNode(d, ptr); 
    curr->next = prev->next; // or temp->next 
    prev->next = curr; 
    ; 
    } 
}; 

List mylist; 

在這個函數中,我試圖在鏈表中間添加一個節點。其他功能將項目添加到後面和前面就好了。當我添加到列表中間時,我的prev-> next鏈接curr就好了,但curr-> next指向NULL。單鏈表中間添加節點

我一直在試圖讓這個程序工作1.5小時。我會感謝你的幫助。這是作業。

回答

1

你要使用的一般程序是:

  1. 衝浪下來next指針,直到你達到你想後插入節點(稱爲A)
  2. 改變您的插入點(B )的next指針以匹配A的next指針的
  3. 變化A的next指針指向到B

它從你的代碼看你試圖維護一個整數的排序列表。這是作業,你可能不會得到代碼片段,但是通過查看你的代碼,我不得不問你爲什麼要在你的節點構造函數中使用下一個參數,然後將下一個值設置爲null。沒有看到剩餘的代碼,我不能肯定地說,但我會改變線路9上的next(NULL)next(n),然後刪除底部附近的curr->next

+0

現在我的代碼正在工作。它一直在工作,但之後我由於某種原因將next(n)更改爲next(NULL)。現在它工作正常。謝謝! – user1078719