双链表ListBack方法问题

时间:2011-04-16 21:48:30

标签: c++ class linked-list

好吧因为某些原因,这个代码对于双向链表模板类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被正确分配方法参数的值,并且其“前一个”节点被正确分配给“findLast”。但是,当我将最后一个分配给newNode时,没有任何反应。

如果它不是立即明显的东西,我很乐意发布Dlist的实际类定义,尽管它是一个非常标准的链表。

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

你缺少findLast->next = newNode;

答案 1 :(得分:0)

如果它是一个双向链表并且你正在跟踪最后一个节点......你为什么要一直迭代它以追加到最后?

您所要做的就是:

node* newNode = new node;
newNode->o = o;
newNode->previous = last;
last->next = newNode;
last = newNode;