




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
#include#include#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define OVERFLOW -2#define LIST_INIT_SIZE 100#define LISTINCREMENT 10typedef int status ;typedef int ElemType ;typedef structElemType *elem;int length,listsize;SqList;status InitList(SqList &L)/初始化L.elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType);if(!L.elem) exit(OVERFLOW);L.listsize=LIST_INIT_SIZE;L.length=0;return OK;status Build(SqList &L)/建立表int i,n;printf(请输入元素个数n和n个元素n);scanf(%d,&n);if(nLIST_INIT_SIZE)/如果n大于当前空间L.elem=(ElemType *)realloc(L.elem,(n+LISTINCREMENT)*sizeof(ElemType);if(!L.elem) exit(OVERFLOW);L.listsize=n+LISTINCREMENT;for(i=0;in;i+)scanf(%d,L.elem+i);L.length=n;return OK;void Print(SqList &L)/输出表中元素和长度int i;for(i=0;iL.length;i+)printf(%d ,*(L.elem+i);printf(n长度为:%dnn,L.length);void Tips()/提示函数printf(请选择你的想要的操作:n);printf( 输出顺序表及顺序表的长度n);printf( 删除值为x的结点n);printf( 删除给定位置i的结点n);printf( 将顺序表逆置n);printf( 将顺序表按升序排序n);printf( 将x插入到顺序表的适当位置上n);printf( 将两个有序表合并n);printf( 退出nn);status ListDelete1(SqList &L,int x)/删除值为X的元素int i;for(i=0;iL.length;i+)if(*(L.elem+i)=x)break;if(i=L.length)return ERROR;for(i+;iL.length;i+)*(L.elem+i-1)=*(L.elem+i);L.length-;return OK;status ListDelete2(SqList &L,int x)/删除第X个元素int i;if(x=L.length)return ERROR;for(i=x+1;iL.length;i+)*(L.elem+i-1)=*(L.elem+i);L.length-;return OK;void Inverse(SqList &L)/逆置函数int i,t;for(i=0;iL.length/2;i+)t=*(L.elem+i);*(L.elem+i)=*(L.elem+L.length-i-1);*(L.elem+L.length-i-1)=t;void Sort(SqList &L)/冒泡排序(升序)int i,j,t;for(i=1;iL.length;i+)for(j=0;j*(L.elem+j+1) t=*(L.elem+j); *(L.elem+j)=*(L.elem+j+1); *(L.elem+j+1)=t;printf(已按升序排列nn);status ListInsert(SqList &L,int x)/将X插入,使仍然有序int i,k;if(L.length=L.listsize)L.elem=(ElemType *)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType);if(!L.elem) exit(OVERFLOW);L.listsize+=LISTINCREMENT;for(i=0;iL.length;i+)if(xk;i-)*(L.elem+i)=*(L.elem+i-1);*(L.elem+k)=x;L.length+;return OK;status Merger(SqList &L,SqList &Lb)/合并两个线性表int i,j,k;SqList Lc;InitList(Lc);if(Lc.listsizeL.length+Lb.length)Lc.elem=(ElemType *)realloc(Lc.elem,(L.length+Lb.length+LISTINCREMENT)*sizeof(ElemType);if(!L.elem) exit(OVERFLOW);Lc.listsize=L.length+Lb.length+LISTINCREMENT;i=j=k=0;while(iL.length & jLb.length)if(*(L.elem+i) *(Lb.elem+j)*(Lc.elem+k)=*(L.elem+i);k+;i+;else*(Lc.elem+k)=*(Lb.elem+j);k+;j+;while(iL.length)*(Lc.elem+k)=*(L.elem+i);k+;i+;while(jLb.length)*(Lc.elem+k)=*(Lb.elem+j);k+;j+;Lc.length=L.length+Lb.length;L=Lc;return OK;int main()int op,x,flag;SqList L,Lb;InitList(L);Build(L);Tips();scanf(%d,&op);while(op)switch(op)case 1:Print(L);break;case 2:printf(请输入要删除的数据X:n);scanf(%d,&x);flag=ListDelete1(L,x);if(flag)printf(删除成功!nn);elseprintf(元素不存在,删除失败!nn);break;case 3:printf(请输入要删除的位置i:n);scanf(%d,&x);flag=ListDelete2(L,x-1);/第i个元素对应的下标为i-1if(flag)printf(删除成功!nn);elseprintf(元素不存在,删除失败!nn);break;case 4:Inverse(L);break;case 5:Sort(L);break;case 6:printf(请输入要插入的数据X:n);scanf(%d,&x);flag=ListInsert(L,x);if(flag)printf(插入成功!nn)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 药物浓度与疗效研究-洞察及研究
- 多中心试验的优化方案设计-洞察及研究
- 建筑规划方案设计评审意见
- 江门美式花园施工方案
- 窗帘盒内部施工方案
- 活动策划方案纸质版封面
- 淄川区庭院施工方案
- 机械车改造施工方案范本
- 武汉建筑装饰方案设计公司
- 测绘安全生产培训课件
- 大学英语四级高频词汇1500+六级高频词汇1500
- 人教版七年级美术上册全套课件
- 《企业内部控制(第二版)》配套教学课件
- 新中韩进出口水产品卫生管理协议
- 护理晋升晋升副主任护师病例分析专题报告(急性心肌梗死患者的护理要点)
- 高级食品生物化学脂类PPT
- 油气集输管线管道工程征地外协管理方案
- 《智慧农业》的ppt完整版
- 新浙教版小学美术一年级上册教学计划及教学目标分解
- CT图像伪影及处理
- 住宅给水设计秒流量计算举例
评论
0/150
提交评论