线性表作用的实现

上传人:夏** 文档编号:561650889 上传时间:2023-02-24 格式:DOC 页数:10 大小:115.50KB
返回 下载 相关 举报
线性表作用的实现_第1页
第1页 / 共10页
线性表作用的实现_第2页
第2页 / 共10页
线性表作用的实现_第3页
第3页 / 共10页
线性表作用的实现_第4页
第4页 / 共10页
线性表作用的实现_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《线性表作用的实现》由会员分享,可在线阅读,更多相关《线性表作用的实现(10页珍藏版)》请在金锄头文库上搜索。

1、基本目的 用表 la 实现线性表的建立,清空,插入,删除,按值查 址,按址查值,并实现两非降序表 la ,lb 合并成一个非 降序表 lcLa ,lb 输入数字时输入小于 0 的数回车结束,并且该数不在该线性 表之内基本设想 编写各个功能实现函数,包括线性表的建立,清空,插 入,删除,按值查址,按址查值,并实现合并,在主函 数中用 la 来调用各个函数, lb 只参与与 la 合并的操作, 合并后的表为 lc ,其中 la, lb, lc 都是非降序的插入函数 要输入要插入的地址和值,执行前判断地址的合法性, 移位时,从最后一位往后移,避免覆盖删除函数 判断地址的合法性,删除某一数值后将其后的

2、数值依次 往前移位按值查址 存在则返回地址,否则返回 error按址查值 判断地址是否存在,是则执行,否则返回 error 合并函数 判断两表是否为空,将两表中第一位数字比较,将较小 值写入 lc 中,较大值与另一表中的第二位比较以此类推 直至其中一表循环结束将另一表剩余元素写入 lc 即可, 若两表循环同时结束,则退出循环#in clude#in clude #defi ne MaxSize 100#defi ne OK 1 #defi ne ERROR -1 using n amespace std; typedef int DataType;定义一个赋值函数void CopyData(D

3、ataType *a, DataType b)*a = b; typedef int Status; typedef int Bool;/定义一个比较函数Bool Equal(DataType a, DataType b) return a=b;/定义一个结构体申请空间 typedef struct SQListDataType SpaceMaxSize; / 表的长度为 MaxSize int Length;SQList;/构造一个空的线性表Status InitList(SQList *L)L-Length = 0;return OK;/清空线性表Status ClearList(SQLi

4、st *L)L-Length = 0;return 0;/判断线性表是否为空Bool IsEmpty(SQList L)return L.Length = 0;/求线性表长度 int GetLength(SQList L)return L.Length;/插入函数Status InsList(SQList *L, int index, DataType e)int j;if(indexL-Length)/ 判断输入的地址是否存在return ERROR;if(L-Length = MaxSize)/ 判断插入后,空间是否足够return ERROR;for(j=L-Length-1; j=in

5、dex; j-)/ 从最后一位开始依次移位,直到 要插入的地址处结束L-Spacej+1 = L-Spacej;CopyData(L-Space + in dex, e);/插入数值L-Length+;return OK;/删除函数Status DelList(SQList *L, int index, DataType *e)int j;if(index=L-Length)/ 判断输入的地址是否存在 return ERROR;CopyData(e, L-Spaceindex); for(j=index; jLength-1; j+)/ 移位L-Spacej = L-Spacej+1;L-Le

6、ngth-;return OK;/ 按值查址int Locate(SQList L, DataType e)int i;for(i=0; iL.Length; i+) if(Equal(L.Spacei, e) return i;return ERROR;/按址查值 DataType GetData(SQList L, int index)if(index=L.Length) return ERROR;return L.Spaceindex;/将 la, lb 中的数值按非降序合并Status MergeList(SQList la, SQList lb, SQList *lc)int i=0

7、,j=0,k=0;while(iGetLength(la) & jGetLength(lb)/ 判断 la,lb 均为非空 if(GetData(la,i) GetData(lb,j)InsList(lc,k,GetData(la,i);i+;k+;elseInsList(lc,k,GetData(lb,j);j+;k+;while(iGetLength(la)InsList(lc,k,GetData(la,i);i+;k+;while(jGetLength(lb)InsList(lc,k,GetData(lb,j);j+;k+;return k;SQList la,lb,lc;/ 建立三个表

8、 la,lb,lc 全局变量/主函数int main()DataType *e1;int i,e;int num;int index=0;ladength=O;清空 laIb.Length=O;清空 lbprintf(please input la:n);while(1)scanf(%d,&la.Spaceindex);/ 输入表 laif(la.Spaceindex=0)/scanf(%d,&lb.Spaceindex);if(lb.Spaceindex0)用小于1的值回车结束lb输入 break;index+;lb.Length+;printf(the length of la is %d

9、n,GetLength(la);/ 表 la 的长度printf(insert in la) please input index and num:n);/ 输入要插入的 地址和要插入的数字scanf(%d %d,&index,&e);printf(n);InsList(&la,index,e);/ 调用插入函数for(i=0;ila.Length;i+)printf(%d ,la.Spacei);/ 输出插入后的 laprintf(n);printf(delete in la)please input index:n);/ 输入要删除的地址 scanf(%d,&index);DelList(&la,index,e1);for(i=0;i带韜報sq- & 蠻注(0q_&)逅_l6iai丄-&U_lo交 pur=5p% 2 x pu 一 =)七 u 一d _En uCT5-)seoo_lHX pu 一 _Enu03p%=ueos

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 活动策划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号