数据结构 链式字符串.doc
文本预览下载声明
#includeiostream.h
//多用链表结点
templateclass ET
struct DblNode
{
ET data; //结点数据域,存储该结点的数据部分
DblNodeET* next; //结点指针域,指示下一个节点的位置
DblNodeET* back; //指向结点的前驱
DblNode(){ next = NULL; back = NULL; } //无参数结点构造函数,用于未给定参数时结点的初始化
};
//====================================================================================================================================
//
// 链表类 部分
//
//====================================================================================================================================
templateclass ET
class LinkList
{
protected:
ET dataTmp; //用于临时存取数据,供成员函数使用
int count, cTmp; //count用于计数表元素个数,即表长; cTmp用于临时计数用
DblNodeET *head, *tail, *pTmp; //*head记录表头的位置; *tail记录表尾的位置; *pTmp记录每次操作结点的指针位置
public:
LinkList(){ count=cTmp=0; head = tail = pTmp = NULL;}
//链表构造函数
~LinkList(){ Clear();} //链表析构函数
//链表相关操作
int Length(){ return count;} //用于获取当前标的长度
void Clear(){ while(count) DelHead(); } //表清空
void Show(); //输出表中现有的所有元素
void ReShow(); //逆序输出表中现有的所有元素
DblNodeET* GetPosP(int postion); //获取指向第postion个位置结点的指针
void HeadInsert(ET e); //从表头插入元素
void TailInsert(ET e); //从表尾插入元素
void Insert(int position, ET e); //向表中第postion个位置插入新的结点元素,元素总数加一
void ReTailInsert(int position, ET e); //重置表中第cTmp个位置元素的数据部分为e,元素总数不变
void GetElem(int position, ET e); //从表中获取第cTmp元素,写入e中,由e输出
void DelHead(); //删除表头
void DelTail(); //删除表尾
void DelElem(int position); //删除表中第cTmp个位置的元素.元素减一
void operator = (LinkListET cop); //赋值符重载函数,实现链表的复制功能
void SUB(LinkListET A, LinkListET B);
//实现链表相减,将仅存在于A中的元素写入当前链表
void ADD(LinkListET A, LinkListET B);
//实现链表相加,将表A 表B中的元素依次写入当前链表
void Seprate(); //奇偶分离函数,使得所有奇数均排列在偶数前
void Sort(); //对链表中的元素进行排序
void KillDouble(); //对链表中的元素进行排序去重
void CinHelp(); //提示输入函数,用于实现键盘输入交互式操作
};
templateclass ET
void LinkListET::Show()
{
cTmp = count
显示全部