リンクリスト内のノードに対して次のクラスを定義しました。
template <class T>
struct ListItem
{
T value;
List<T> wordList; // <--------
ListItem<T> *next;
ListItem<T> *prev;
ListItem(T theVal)
{
this->value = theVal;
this->next = NULL;
this->prev = NULL;
}
};
上記のクラスには、別のクラス、つまりListが含まれています。このクラスには独自の関数があり、そのうちの1つはinsertAtEndです。ListItemを作成しましたが、insertAtEndを呼び出してそのwordListコンポーネントの値を変更したいと思います。それを行うための構文は何ですか?
リストクラスは次のとおりです。
template <class T>
class List
{
ListItem<T> *head;
public:
// Constructor
List(); //done
//test function
void displaylist();
// Copy Constructor
List(const List<T>& otherList); //done
// Destructor
~List();
// Insertion Functions
void insertAtHead(T item); //done
void insertAtTail(T item); //done
void insertAfter(T toInsert, T afterWhat); //done
void insertSorted(T item); //done
// Lookup Functions
ListItem<T> *getHead(); //done
ListItem<T> *getTail(); //done
ListItem<T> *searchFor(T item); //done
// Deletion Functions
void deleteElement(T item); //done
void deleteHead();
void deleteTail(); //done
// Utility Functions
int length(); //done
};
insertAtTail関数の実装は次のとおりです。
template <class T>
void List<T>::insertAtTail(T item)
{
ListItem<T>* a = new ListItem<T>(item);
if(head==NULL)
{
head=a;
}
else
{
ListItem<T>* temp;
temp=head;
while(temp->next!=NULL)
{
temp=temp->next;
}
temp->next=a;
a->prev=temp;
}
}