数据结构 矩阵操作

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

运行时的显示界面,可选择相应操作

#include

//多用链表结点

template

struct DblNode

{

ET data; //结点数据域,存储该结点的数据部分

DblNode* next; //结点指针域,指示下一个节点的位置

DblNode* back; //指向结点的前驱

DblNode(){ next = NULL; back = NULL; } //无参数结点构造函数,用于未给定参数时结点的初始化

};

//=========================================================================== =========================================================

//

// 链表类部分

//

//=========================================================================== =========================================================

template

class LinkList

{

protected:

ET dataTmp;

//用于临时存取数据,供成员函数使用

int count, cTmp; //count用于计数表元素个数,即表长;cTmp用于临时计数用

DblNode *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(); //逆序输出表中现有的所有元素

DblNode* 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 = (LinkList& cop); //赋值符重载函数,实现链表的复制功能

void SUB(LinkList &A, LinkList &B);

//实现链表相减,将仅存在于A中的元素写入当前链表

void ADD(LinkList &A, LinkList &B);

//实现链表相加,将表A 表B中的元素依次写入当前链表

void Seprate(); //奇偶分离函数,使得所有奇数均排列在偶数前

void Sort(); //对链表中的元素进行排序

void KillDouble(); //对链表中的元素进行排序去重

void CinHelp(); //提示输入函数,用于实现键盘输入交互式操作

};

template

void LinkList::Show()

{

cTmp = count;

pTmp = head; //指向头指针的第一个后继

cout<

while(cTmp>0 && count>0) //当表中有元素时

{

dataTmp = pTmp->data;

cout<

cTmp --; //计数元素总数减一

pTmp = pTmp->next; //每输出一位向后移动一位

}

cout<

}

template

void LinkList::ReShow()

{

cTmp = count;

pTmp = tail; //指向头指针的第一个后继

cout<

while(cTmp>0 && count>0) //当表中有元素时

{

dataTmp = pTmp->data;

cout<

cTmp --; //计数元素总数减一

pTmp = pTmp->back; //每输出一位向后移动一位

}

cout<

}

template

DblNode* LinkList::GetPosP(int postion)

{

cTmp = postion;

相关文档
最新文档