双方向リンク リストを作成するためのスターター コードが提供されています。私が抱えている問題は、新しく作成されたノードを「先頭」に挿入する関数を実装することです。
リンク リスト内のノードは、次の構造体です。
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;
}
};
先頭に挿入するコードは次のとおりです。
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;
}
}
問題は、項目を挿入するたびに異なるメモリ アドレスを持つ新しいクラス オブジェクトを作成することになっている場合です。上記で行っていることは、同じメモリの場所を更新します。新しいクラス オブジェクトを作成する方法を知る必要があります。