数据结构习题集(李冬梅 第2版)C语言版源程序习题源代码 习题集-算法2-13.docx

上传人:太** 文档编号:63267825 上传时间:2022-11-24 格式:DOCX 页数:4 大小:17.15KB
返回 下载 相关 举报
数据结构习题集(李冬梅 第2版)C语言版源程序习题源代码 习题集-算法2-13.docx_第1页
第1页 / 共4页
数据结构习题集(李冬梅 第2版)C语言版源程序习题源代码 习题集-算法2-13.docx_第2页
第2页 / 共4页
点击查看更多>>
资源描述

《数据结构习题集(李冬梅 第2版)C语言版源程序习题源代码 习题集-算法2-13.docx》由会员分享,可在线阅读,更多相关《数据结构习题集(李冬梅 第2版)C语言版源程序习题源代码 习题集-算法2-13.docx(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、include include using namespace std;/函数结果状态代码define OK 1define ERROR 0define OVERFLOW -2/Status是函数的返回值类型,其值是函数结果状态代码 typedef int Status;#define MAXSIZE 100/存储数据的基地址/当前个数/顺序存储结构为SqList/初始化/销毁顺序表/取值/插入/求两个长度均为n的序列A和B的中位数/输出顺序表typedef struct SqList int *elem;int length;SqList;Status InitList(SqList &L)

2、;Status DestroyList(SqList &L);Status GetElem(SqList Lz int iz int &e);Status Listinsert (SqList &L,int ifint e);int Search_Mid(intBz int n);void PrintList(SqList L);int main() (SqList A;InitList(A);Listinsert(A,1,1);Listinsert(Af 2r 3);Listinsert(A,3,5);Listinsert(A,4z 7);Listinsert(A,5,9); coutcc”

3、线性表A为:, PrintList(A);SqList B;InitList(B);Listinsert (B,1,2);Listinsert(B,2,4);ListInsert(B,3r 6);Listinsert(B,4,8);ListInsert(Bz 4 A10); cout”线性表B为:”; PrintList(B);int ans=Search_Mid(Aelem,B.elem,5); 。0a”两个列表的中位数为:。$6。11;DestroyList(A); DestroyList(B);return 0; )/初始化Status InitList(SqList &L)/构造一个空

4、的顺序表LL.elem=new intMAXSIZE;if(JL.elem) exit(OVERFLOW);L.length = 0; return OK;/销毁顺序表Status DestroyList(SqList &L) if(L.length) (delete L.elem;L.length = 0; /取值Status GetElem(SqList Lz int irint &e) (if (iL.length) return ERROR; e=L.elemi-l; return OK;)/为顺序表分配一个大小为MAXSIZE的数组空间/存储分配失败退出/空表长度为0/释放空间/表长

5、又变成0/判断i值是否合理,假设不合理,返回ERROR /elem i-l 单元存储第i个数据元素/i值不合法/当前存储空间已满/插入位置及之后的元素后移/将新元素e放入第i个位置/表长加1/序列A的头、尾指针初始化/序列B的头、尾指针初始化/插入Status Listinsert(SqList &L,int i,int e)/在顺序表L中第i个位置插入新的元素e, i值的合法范围是length+lif (iL.length+1) return ERROR; if(L.length=MAXSIZE) return ERROR; for (int j=L.length-1;j=i-l;j-)L.

6、elemj+1=L.elemj;L elemi-1=e;+L ,length;return OK;)/输出顺序表void PrintList(SqList L)(coutHn;for(int i=l;i=L.length;i+) (int e;GetElem(L,i,e);coute;if (i!=L.length) coutnz n;)coutn nendl;)/查找int Search_Mid(int Az int B, int n) /求两个长低均为n的序列A和B的中位数int startl=0A endl=n-l;int start2=0z end2=n-l;while (startl

7、!=endl| Istart2!=end2)int ml=(startl+endl)/2;/满足条件,中位数相等,直接返回值/满足条件,中位数相等,直接返回值int m2=(start2+end2)/2;if(Aml=Bm2)return Aml;else if (AmlBm2)/满足条件,a为较小中位数时/分别考虑奇数和偶数,保持两个子数组元素个数相等if ( (startl+endl)%2=0) (startl=ml; end2=m2;) else (startl=ml+l; end2=m2;) ) else(if ( (startl+endl)%2=0) (endl=ml; start2

8、=m2;) else (endl=ml; start2=m2+l;)if ( (startl+endl)%2=0) (startl=ml; end2=m2;) else (startl=ml+l; end2=m2;) ) else(if ( (startl+endl)%2=0) (endl=ml; start2=m2;) else (endl=ml; start2=m2+l;)/假设元素为奇数个/舍弃A中间点以前的局部且保存中间点/舍弃B中间点以后的局部且保存中间点/假设元素为偶数个/舍弃A的前半局部/舍弃B的后半局部/满足条件,a为较大中位数/假设元素为奇数个/舍弃A中间点以后的局部且保存中间点/舍弃B中间点以前的局部且保存中间点/假设元素为偶数个/舍弃A的后半局部/舍弃B的前半局部return Astart1Bstart2?Astartl:Bstart2;输出结果:线性表 A 为:1, 3, 5, 7, 9线性表 B 为:2, 4, 6, 10, 8两个列表的中位数为:5

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 解决方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁