实现算法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
- 实现算法2.3的程序
- 实现算法2.3的程序
- Dinic算法的程序实现
- 实现算法2.1的程序
- 实现算法2.2的程序
- 实现算法2.4的程序
- 实现算法2.17的程序
- 实现算法2.17的程序
- 实现算法2.4的程序
- 实现算法2.2的程序
- 实现算法2.2的程序
- 实现算法2.1的程序
- CRC的算法分析和程序实现
- Gossip数学问题算法的程序实现
- 用单链表结构实现算法2.2的程序
- 实现算法2.11、2.12的程序
- 实现算法2.20、2.21的程序
- 实现算法2.20、2.21的程序
- Leetcode--Reorder List
- 二分图 zoj 1137 poj 1325 poj1422 hdu2063 hdu1498
- 工作流任务的超时计算
- android学习前传
- 一步步带你深入理解数据结构系列--散列表
- 实现算法2.3的程序
- windows7 64bit下mvn命令后提示‘cmd’不是内部或外部命令,也不是可执行程序或批处理文件
- 实现算法2.2的程序
- LeetCode-First Missing Positive
- POJ 1751 Highways
- [LeetCode]—Word Search
- 实现算法2.2的程序
- 【DP】POJ 1252 完全背包
- C# 获取文件名及扩展名