好吧,出於某種原因,這段代碼對於雙鏈表列表模板類Dlist的insertBack函數並不完全適用。雙鏈表列表插入方法問題
template <typename T>
void Dlist<T>::insertBack(T *o)
{
node *findLast;
node* newNode = new node;
newNode->next = NULL;
newNode->prev = NULL;
newNode->o = o;
if (first == NULL){
first = newNode;
last = newNode;
} else {
findLast = first;
while (findLast->next){
findLast = findLast->next;
}
newNode->prev = findLast;
last = newNode;
}
}
第一個和最後一個對應於Dlist的第一個和最後一個節點。我的問題是最後'last'沒有被分配給newNode。當我調試(使用VS2010)時,newNode被正確地賦值了method參數的值,並且它的'previous'節點被正確地賦值給'findLast'。但是當我將最後一個賦給newNode時,什麼也沒有發生。
如果它不是很明顯,我很樂意發佈Dlist的實際類定義,儘管它是一個非常標準的鏈表。
感謝您的幫助!
現在我覺得很傻,通過給定的,這是一個雙向鏈表列表進行迭代。 – Slims 2011-04-16 22:11:15
請注意,您希望以同樣的方式實現單鏈表。如果必須遍歷列表,則追蹤尾部(最後一個)允許O(1)追加執行時間與O(n)相比較。 – 2011-04-16 22:49:47