template<class T>
circularListWithHeader<T>::circularListHeader()
{
headerNode=new chainNode<T>();
headerNode->next=headerNode;
listSize=0;
}
循环链表的节点构造和单向链表的节点构造是一样的,不同之处在于,循环链表的尾节点
的next指向循环链表的头结点。
template<class T>
int circularListWithHeader<T>::indexOf(const T& theElement)const
{
headerNode->element=theElement;
chainNode<T>* currentNode=headerNode->next;
int index=0;
while(currentNode->element!=theElement)
{
currentNode=currentNode->next;
index++;
}
if(currentNode==headerNode)
return -1;
else
return index;
}
注意:循环链表的头节点是不负责存放数据的,循环列表从第二个节点开始存放数据,并且第二个
节点的index才是0.