我怎样(或者我应该)在链表中使用指针

时间:2012-01-28 20:13:28

标签: c++

我正在创建一个Linked List程序,我现在有这个方法将一个项目插入到列表的前面:

template <class T>
void LinkedList<T>::insert(T *o)
{
    node newNode;
    newNode.o = o;
    newNode.next = first;
    newNode.prev = NULL;
    first->prev = &newNode;
    first = &newNode;
}

我有一个结构如下:

struct node {
node   *next;
node   *prev;
T      *o;
};

我认为我的逻辑适用于插入方法;但是,我觉得好像我没有正确地做,特别是处理指针。我觉得好像我有很多新节点。线条,我可以以某种方式做得更好。有什么建议或是不是?

注意:我是C ++的新手,所以请善待。我知道这是一个简单的问题

1 个答案:

答案 0 :(得分:3)

newNodeinsert()的本地版本,当该方法返回时将被销毁,这意味着first->prevfirst将指向不再node的{​​{1}}存在。

使用new

template <class T>
void LinkedList<T>::insert(T *o)
{
    node* newNode = new node;
    newNode->o = o;
    newNode->next = first;
    newNode->prev = NULL;
    first->prev = newNode;
    first = newNode;
}