C++ 为双链接列表创建类的新实例

C++ 为双链接列表创建类的新实例,c++,class,linked-list,C++,Class,Linked List,我已经获得了创建双链接列表的起始代码。我遇到的问题是实现一个函数,在“head”处插入一个新创建的节点 链表中的节点是以下结构: template <class T> struct ListItem { T value; ListItem<T> *next; ListItem<T> *prev; ListItem(T theVal) { this->value = theVal;

我已经获得了创建双链接列表的起始代码。我遇到的问题是实现一个函数,在“head”处插入一个新创建的节点

链表中的节点是以下结构:

template <class T>
struct ListItem
{
    T value;
    ListItem<T> *next;
    ListItem<T> *prev;

    ListItem(T theVal)
    {
        this->value = theVal;
        this->next = NULL;
        this->prev = NULL;
    }
};
模板
结构列表项
{
T值;
列表项*下一步;
ListItem*prev;
列表项(T theVal)
{
此->值=值;
此->下一步=空;
此->上一个=空;
}
};
头部插入的代码如下所示:

void List<T>::insertAtHead(T item)
{
     ListItem<int> a(item);     //create a node with the specified value

                   if(head==NULL)
                   {
                                 head=&a;   //When the list is empty, set the head
                                            //to the address of the node
                   }

                   else
                   {

                         //when the list is not empty, do the following.
                        head->prev=&a;
                        a.next=head;
                        head=&a;
                   }
}
void List::insertatead(T项)
{
ListItem a(item);//创建具有指定值的节点
if(head==NULL)
{
head=&a;//当列表为空时,设置head
//到节点的地址
}
其他的
{
//当列表不为空时,请执行以下操作。
head->prev=&a;
a、 下一个=头部;
head=&a;
}
}
现在的问题是,每当我插入一个项时,我应该创建一个具有不同内存地址的新类对象。我在上面所做的是更新相同的内存位置。
我需要知道如何创建一个新的类对象。

您所做的是错误的,并且有潜在的危险(使用指向局部变量的指针)。您需要使用以下表达式分配新节点:

ListItem<int>* a = new ListItem<int>(item);
ListItem*a=新的ListItem(项目);

当然,处理完列表后,您必须记住使用
delete

释放内存是的,我一直在尝试。由于某种原因,我无法正确理解语法。是ListItem a=新ListItem吗?这不是C,我删除了标签。谢谢你的回答。我犯了一个非常愚蠢的错误。这只是我的第二个C++课程,我已经和编程脱节了。再次感谢。:)