您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 人事档案/员工关系 > 顺序表基本操作(C++版)
#includeiostreamusingnamespacestd;intOVERFLOW=-2;intERROR=0;intOK=1;intj;//---------顺序表的存储结构----------#defineMAXSIZE10//当前顺序表可能达到的最大长度#defineLISTINCREMENT5typedefintElemType;typedefintStatus;typedefstruct{ElemType*elem;//存储空间的基地址intlength;//当前长度,表中有多少个元素intlistsize;}SqList;//----------初始化--------------------StatusInitList_Sq(SqList&L){//构造一个空的顺序表LL.elem=newElemType[MAXSIZE];//为顺序表分配一个大小为MAXSIZE的数组空间if(!L.elem)exit(OVERFLOW);//存储空间分配失败L.listsize=MAXSIZE;L.length=0;//空表的长度为0returnOK;}//----------建立------------------------StatusBuild_Sq(SqList&L){inti,n;cout请输入要建立的顺序表的中元素的个数:endl;cinn;if(nMAXSIZE)//如果n的值大于当前空间{L.elem=newElemType[n+LISTINCREMENT];if(!L.elem)exit(OVERFLOW);L.listsize=n+LISTINCREMENT;}cout请输入这n个元素:endl;for(i=0;in;i++)cinL.elem[i];L.length=n;returnOK;}//----------查找------------------------intLocateElem_Sq(SqListL,ElemTypee){for(inti=0;iL.length;i++)if(L.elem[i]==e)returni+1;return0;}//-----------插入------------------------StatusListInsert_Sq(SqList&L,inti,ElemTypee){//在顺序表L中的第i个位置之前插入新的元素e//i值的合法范围是1=i=L.length+1if(i1||iL.length+1)returnERROR;//i值不合法if(L.length==MAXSIZE)returnERROR;//当前存储空间已满for(j=L.length-1;j=i-1;j--)L.elem[j+1]=L.elem[j];//插入位置及之后的元素后移L.elem[i-1]=e;//将新元素e放入第i个位置++L.length;//表长增1returnOK;}//-----------删除第i个元素--------------------------StatusListDelete_Sq(SqList&L,inti,ElemType&e){//在顺序表L中删除第i个元素,并用e返回其值//i的值的合法范围是1=i=L.lengthif((i1)||(iL.length))returnERROR;e=L.elem[i-1];//将欲删除的元素保留在e中for(j=i;j=L.length-1;j++)L.elem[j-1]=L.elem[j];--L.length;returnOK;}//-----------删除值为e的结点-----------------------StatusListDel_Sq(SqList&L,inte){intj;inttemp=0;for(inti=0;iL.length;i++){if(L.elem[i]==e){j=i+1;for(intk=j;k=L.length-1;j++)L.elem[j-1]=L.elem[j];--L.length;i--;temp=1;}}if(temp==0)cout没有该元素endl;returnOK;}//----------主函数---------------------------intmain(){intchoice=0;inti;SqListL;ElemTypee;InitList_Sq(L);cout选项:endl1、创建endl2、查找endl3、删除endl4、插入endl5、退出endl请选择:;while(choice!=5){cinchoice;switch(choice){case1:Build_Sq(L);break;case2:intn;cout值为:;cine;n=LocateElem_Sq(L,e);cout该元素的位置:nendl;break;case3:{intchoice1;cout1、删除第i个元素endl2、删除元素为e的元素endl请选择:;cinchoice1;switch(choice1){case1:cout元素位置:;cini;ListDelete_Sq(L,i,e);coute被删除endl;break;case2:cout元素值为:;cine;ListDel_Sq(L,e);coute被删除endl;break;default:break;}break;}case4:{cout位置:;cini;cout值为:;cine;ListInsert_Sq(L,i,e);break;}case5:return0;default:break;}cout请选择:;}return0;}
本文标题:顺序表基本操作(C++版)
链接地址:https://www.777doc.com/doc-1652212 .html