数据结构顺序线性
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
的操作#include<iostream>usingnamespacestd;#defineLIST_INIT_SIZE100//线性表存储空间的初始分配量#defineLISTINCREMENT10//线性表存储的分配增量#defineOK1#defineERROR0typedefintStatus;typedefstruct{int*elem;intlength;intlistsize;}SqList;StatusInitList_Sq(SqList&L)//创建线性表{intelem;L.elem=(int*)malloc(LIST_INIT_SIZE*sizeof(int));if(!L.elem)exit(OVERFLOW);//存储分配失败L.length=0;//空表长度为0L.listsize=LIST_INIT_SIZE;//初始化容器容量int*p=L.elem;cout<<"创建线性表---请输入数字,按ctrl+z结束"<<endl;while(cin>>elem){*p=elem;++p;++L.length;}cin.clear();returnOK;}StatusListInsert_Sq(SqList&L,inti,inte){//在顺序线性表L中第i个位置之前插入元素e//i的合法值为1<=i<=ListLength_Sq(L)+1if(i<1||i>L.length+1){cout<<"插入位置超出范围"<<endl;returnERROR;//i值不合法}if(L.length>=L.listsize)//当前存储空间已满,增加分配{int*newbase;newbase=(int*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(int));if(!newbase){cout<<"存储分配失败"<<endl;exit(OVERFLOW);//存储分配失败}newbase=L.elem;L.listsize+=LISTINCREMENT;//增加存储空间}int*q;q=&L.elem[i-1];for(int*p=&L.elem[L.length-1];p>=q;--p){*(p+1)=*p;}*q=e;++L.length;cout<<"插入成功"<<endl;returnOK;}StatusListDelete_Sq(SqList&L,inti,int&e){//在顺序线性表中删除第i个元素,并用e返回其值//i的合法性为1<=i<=ListLength_Sq(L)if(i<1||i>L.length){returnERROR;}//i值不合法int*p=&L.elem[i-1];//p为被删除元素的位置e=*p;//被删除元素的赋给eint*q=&L.elem[L.length-1];//表尾的元素for(++p;p<=q;p++){*(p-1)=*p;//被删除之后的元素左移}--L.length;//表长减1cout<<"删除了元素"<<e<<endl;returnOK;}StatusListDestory_Sq(SqList&L)//销毁线性表{free(L.elem);returnOK;}StatusListDisplay_Sq(SqListL)//显示线性表{int*p=&L.elem[0];int*q=&L.elem[L.length-1];inti=1;for(;p<=q;++p,++i){cout<<*p<<'\t';if(i%10==0)//每行输出10个数{cout<<endl;}}cout<<endl;returnOK;}intmain(){SqListL;charkey=0;intpos=0;//插入位置intvalue=0;//插入元素InitList_Sq(L);T:system("cls");cout<<"----------数据结构线性顺序表操作---------------"<<endl;cout<<"----------1.插入元素---------------------------"<<endl;cout<<"----------2.删除元素---------------------------"<<endl;cout<<"----------3.显示元素---------------------------"<<endl;cout<<"----------4.显示表长---------------------------"<<endl;cout<<"----------5.退出-------------------------------"<<endl;cout<<"-----------------------------------BY冰封飞飞"<<endl;cin>>key;switch(key){case'1':cout<<"请输入插入的位置"<<endl;cin>>pos;cout<<"请输入插入元素"<<endl;cin>>value;ListInsert_Sq(L,pos,value);break;case'2':cout<<"请输入删除位置"<<endl;cin>>pos;ListDelete_Sq(L,pos,value);break;case'3':ListDisplay_Sq(L);break;case'4':cout<<"线性表的长度为"<<L.length<<endl;break;case'5':ListDestory_Sq(L);return0;break;default:cout<<"输入超出范围"<<endl;break;}system("pause");gotoT;}