📄 listnode.hpp
字号:
#include<iostream.h>
#ifndef LISTNODE_H
#define LISTNODE_H
template <class Type> class List;
template<class Type> class ListIterator;
/////////////////////////////////////////////////////////////////////////
//链表结点类定义开始,实现与课本基本一样,不作多余注释
/////////////////////////////////////////////////////////////////////////
template <class Type>
class ListNode
{
friend class List<Type>;
friend class ListIterator<Type>;
public:
ListNode();
ListNode(const Type& item,ListNode<Type>* next=NULL);
ListNode<Type>* getLink();
Type& getData();
void setLink(ListNode<Type>* next);
void setData(const Type& value);
void InsertAfter(ListNode<Type>* p);//将p所指示的节点成为当前节点的后继节点
ListNode<Type>* RemoveAfter();
ListNode<Type>* GetNode(const Type& item, ListNode<Type>* next);
private:
Type data;
ListNode<Type> *link;
};
/////////////////////////////////////////////////////////////////////////
template<class Type>
ListNode<Type>::ListNode():link(NULL)
{}
//////////////////////////////////////////////////////////////////////////
template<class Type>
ListNode<Type>::ListNode(const Type& item,ListNode<Type>* next):data(item),link(next)
{}
//////////////////////////////////////////////////////////////////////////
template<class Type>
void ListNode<Type>::InsertAfter(ListNode<Type>* p)
{
p->link=link;
link=p;
}
//////////////////////////////////////////////////////////////////////////
template<class Type>
ListNode<Type>* ListNode<Type>::GetNode(const Type& item,ListNode<Type>* next=NULL)
{
ListNode<Type>* newnode=new ListNode<Type>(item);
newnode->link=next;
return newnode;
}
//////////////////////////////////////////////////////////////////////////
template<class Type>
ListNode<Type>* ListNode<Type>::RemoveAfter()
{
ListNode<Type>* tempptr=link;
if(link==NULL)
return NULL;
link=tempprt->link;
return tempptr;
}
//////////////////////////////////////////////////////////////////////////
template<class Type>
ListNode<Type>* ListNode<Type>::getLink()
{
return link;
}
//////////////////////////////////////////////////////////////////////////
template<class Type>
Type& ListNode<Type>::getData()
{
return data;
}
//////////////////////////////////////////////////////////////////////////
template<class Type>
void ListNode<Type>::setLink(ListNode<Type>* next)
{
link=next;
}
//////////////////////////////////////////////////////////////////////////
template<class Type>
void ListNode<Type>::setData(const Type& value)
{
data=value;
}
//////////////////////////////////////////////////////////////////////////
//链表结点类定义结束
//////////////////////////////////////////////////////////////////////////
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -