リンクリストにヘッド挿入を行う関数を書く。オブジェクトをヘッドに挿入してリストを再アタッチするのと同じように半分は機能していますが、リスト内の元のヘッドノードが何らかの形で失われています。
リストが [緑、赤、青] の場合、黄色を挿入しようとすると機能しますが、新しいリストは [黄、赤、青] になります。
ノードクラスは次のとおりです。
template<class T>
class Node
{
public:
Node(T theData, Node<T>* theLink) : data(theData), link(theLink){}
Node<T>* getLink( ) const { return link; }
const T& getData( ) const { return data; }
void setData(const T& theData) { data = theData; }
void setLink(Node<T>* pointer) { link = pointer; }
private:
T data;
Node<T> *link;
};
リストはキューに格納されるため、ヘッド挿入はそのクラスのメソッドです。キューには、リストの対応する位置を指すプライベート変数 front と back があります。
template<class T>
void Queue<T>::headInsert(T& theData)
{
Node<T> *temp;
temp = front->getLink();
front->setLink(new Node<T>(theData, temp->getLink() ));
front = front->getLink();
}