我正在创建一个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 ++的新手,所以请善待。我知道这是一个简单的问题
答案 0 :(得分:3)
newNode
是insert()
的本地版本,当该方法返回时将被销毁,这意味着first->prev
和first
将指向不再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;
}