1、 int length; int listsize;public: /初始化顺序表 void init(List *L); /删除顺序表 void DestroyList(List &L); /将顺序表置为空表 void ClearList(); /判断顺序表是否为空 bool ListEmpty(); /判断顺序表是否为满 bool ListFull(); /决定返回表中元素pre_e的前驱 ElemType PriorElem(ElemType cur_e,ElemType &pre_e); /决定返回表中元素next_e的后继 ElemType NextElem(ElemType cur
2、_e,ElemType &next_e); /从线性表中删除表头,表尾,或等于给定值的元素 bool ListDelete(int ,ElemType &e); /遍历顺序表 void ListTraverse(); /返回顺序表的长度 int ListLength(); /获取顺序表中的第i个元素 void GetElem(int ,ElemType*); /判断顺序表两元素是否相等 bool EqualList(ElemType*,ElemType*); /判断顺序表两元素是否不等 bool Less_EqualList(ElemType*,ElemType *); /顺序表的查找算法 b
3、ool LocateElem(ElemType ,int ); /更新线性表中的给定元素 bool UpdateList(ElemType &e,ElemType); /顺序表的合并算法 void MergeList(List*,List*); /顺序表的插入算法 bool ListInsert(int ,ElemType&); /顺序表的联合算法 void UnionList(List*,List*); /对线性表按升序或降序输出 void printlist(int);Linelist2.cpp#include linelist2.h#include iostreamstringmallo
4、c.husing namespace std;void List:init(List *L) L-elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType); if(!L-elem) exit(OVERFLOW);length=0;listsize=LIST_INIT_SIZE;DestroyList(List &L) free(&ClearList() length=0;bool List:ListEmpty() if(length=0) return true; else return false;ListFull() if(length
5、=listsize)ElemType List:PriorElem(ElemType cur_e,ElemType &pre_e) for(int i=0;i0 删除表头 mark0) e=elem0; for(i=1; elemi-1=elemi; else if(mark=length) return false; else e=elemi; for(j=i+1;jj+) elemi-1=elemi; length-; return true;ListTraverse() coutsetw(8)elemi.name; coutsetw(10)elemi.stuno;setw(9)elemi
6、.age;elemi.scoreendl;int List:ListLength() return length;GetElem(int i,ElemType* e) while(ilength)请输入1-lengthi; *e=elemi-1;EqualList(ElemType* e1,ElemType* e2) if(strcmp(*e1).name,(*e2).name) if(*e1).age!=(*e2).age) if(strcmp(*e1).stuno,(*e2).stuno) if(*e1).score!=(*e2).score)Less_EqualList(ElemType
7、* e1,ElemType * e2) if(strcmp(e1-name,e2-name)=0)LocateElem(ElemType e,int type) int i; switch (type) case EQUAL: for(i=0; if(EqualList(&elemi,&e) return true; break; default: break; return false;UpdateList(ElemType &e,ElemType e1) if(strcmp(elemi.name,e.name)=0) elemi=e1; return true;MergeList(List
8、* La,List* Lb) int La_len,Lb_len; La_len=La-ListLength(); Lb_len=Lb-La_len; elemi=La-elemi; for(int j=0;Lb_len; elemj+i=Lb-elemj; length=La_len+Lb_len; /MaxSize=La-MaxSize+Lb-MaxSize;ListInsert(int i,ElemType& e) ElemType *p,*q,*newbase; if(i=listsize) newbase=(ElemType*)realloc(elem,(listsize+LISTINCREMENT)*sizeof(ElemType); if(!newbase) exit(OVERFLOW); elem=newbase; listsize=LISTINCREMENT+listsize; q=&elemi-1; p=&elemlength-1; for(p;p=q
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1