实现算法2.3的程序

来源:互联网 发布:交大医学院网络英语 编辑:程序博客网 时间:2024/06/10 11:23
// algo2-3.cpp 实现算法2.7的程序#include"c1.h"typedef int ElemType;#include"c2-1.h"#include"bo2-1.cpp"#include"func2-3.cpp" // 包括equal()、comp()、print()、print2()和print1()函数void MergeList(SqList La,SqList Lb,SqList &Lc) // 算法2.7{ // 已知顺序线性表La和Lb的元素按值非递减排列。// 归并La和Lb得到新的顺序线性表Lc,Lc的元素也按值非递减排列ElemType *pa,*pa_last,*pb,*pb_last,*pc;pa=La.elem;pb=Lb.elem;Lc.listsize=Lc.length=La.length+Lb.length; // 不用InitList()创建空表Lcpc=Lc.elem=(ElemType *)malloc(Lc.listsize*sizeof(ElemType));if(!Lc.elem) // 存储分配失败exit(OVERFLOW);pa_last=La.elem+La.length-1;pb_last=Lb.elem+Lb.length-1;while(pa<=pa_last&&pb<=pb_last) // 表La和表Lb均非空{ // 归并if(*pa<=*pb)*pc++=*pa++; // 将pa所指单元的值赋给pc所指单元后,pa和pc分别+1(指向下一个单元)else*pc++=*pb++; // 将pb所指单元的值赋给pc所指单元后,pa和pc分别+1(指向下一个单元)} // 以下两个while循环只会有一个被执行while(pa<=pa_last) // 表La非空且表Lb空*pc++=*pa++; // 插入La的剩余元素while(pb<=pb_last) // 表Lb非空且表La空*pc++=*pb++; // 插入Lb的剩余元素}void main(){SqList La,Lb,Lc;int j;InitList(La); // 创建空表Lafor(j=1;j<=5;j++) // 在表La中插入5个元素,依次为1、2、3、4、5ListInsert(La,j,j);printf("La= "); // 输出表La的内容ListTraverse(La,print1);InitList(Lb); // 创建空表Lbfor(j=1;j<=5;j++) // 在表Lb中插入5个元素,依次为2、4、6、8、10ListInsert(Lb,j,2*j);printf("Lb= "); // 输出表Lb的内容ListTraverse(Lb,print1); // 由按非递减排列的表La、Lb得到按非递减排列的表LcMergeList(La,Lb,Lc);printf("Lc= "); // 输出表Lc的内容ListTraverse(Lc,print1);}

运行结果如下:

La= 1 2 3 4 5Lb= 2 4 6 8 10Lc= 1 2 2 3 4 4 5 6 8 10


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 广州市人力资源和社会保障局 人力社会保障局社保网 深圳市人力资源社会保障局 贵阳人力资源 深圳市人力资源和社会保障局 重庆市人力资源和社会保障局 青岛市人力资源和社会保障局 罗德岛人力资源部 河南省人力资源和社会保障厅 重庆人力资源和社保局网 潍坊市人力资源和社会保障局 台山人才人力资源网 河南省人力资源社会保障厅 重庆市人力资源社会保障局 潍坊市人力资源社会保障局 广州市人力资源保障局 深圳市人力资源保障局 北京市人力资源和社会保障局 重庆市人力资源社会保障网 成都市人力资源和社会保障局 北京市人力资源社会保障局 吴江人力资源 贵阳人力资源社会保障网 重庆市人力资源和社会保障网 漯河市人力资源和社会保障局 成都市人力资源社会保障局 罗德岛人力资源 漯河市人力资源社会保障局 青岛市人力资源社会保障局 淄博人力资源网 济南市人力资源和社会保障局 胶州人力资源网 重庆市人力资源保障局 新疆人力资源和社会保障厅 人力资源服务公司 广东人力资源 广东省人力资源 人力资源公司 人力资源服务 人力资源会计 人力资源管理员培训