实验1——顺序表的合并
来源:互联网 发布:js横向滚动条插件 编辑:程序博客网 时间:2024/06/03 14:55
Description
假定两个顺序表的数据已经按照从小到大的顺序排列,实现两个顺序表的合并
Input
第一行输入n表示顺序表A包含的·n个数据
第二行输入n个数据,数据是小于100的正整数
第三行输入m表示顺序表B包含的·n个数据
第二行输入m个数据,数据是小于100的正整数
Output
输出合并后的顺序表内的所有数据,数据之间用空格隔开
Sample Input
311 33 55422 44 66 88
Sample Output
11 22 33 44 55 66 88
#include <stdio.h> #include <malloc.h> typedef struct { int *elem; int length; }SqList; int InitList_sq(SqList &A, int n) { A.elem=(int *)malloc(n*sizeof(int)); if(!A.elem) return 0; A.length=n; return 1; } int Load_Sq(SqList &L) { int i; if(L.length == 0) return 0; else { for(i=0;i <L.length;i++) printf("%d ",L.elem[i]); } printf("\n"); return 1; } SqList MergeList_Sq(SqList &A,SqList &B, SqList &C) { int *pa=A.elem; int *pb=B.elem; C.length=A.length + B.length; int *pc=C.elem=(int * )malloc(C.length * sizeof(int)); int *pa_last=A.elem + A.length; int *pb_last=B.elem + B.length; while((pa<pa_last)&&(pb <pb_last)) { if(*pa <=*pb) *pc++ = *pa++; else *pc++ = *pb++; } while(pa<pa_last) *pc++=*pa++; while(pb <pb_last) *pc++=*pb++; return C; } int main() { SqList A, B, C; int na,nb; scanf("%d",&na); InitList_sq(A,na); for(int i=0;i<na;i++) { scanf("%d",&A.elem[i]); } scanf("%d",&nb); InitList_sq(B,nb); for(int j=0;j<nb;j++) { scanf("%d",&B.elem[j]); } MergeList_Sq(A,B,C); Load_Sq(C); return 0; }
0 0
- 实验1——顺序表的合并
- 【实验】两个有序顺序表的合并
- 实验报告1—线性表的顺序结构
- 实验1——顺序表例程
- 数据结构实验1——顺序表
- 顺序表的合并
- 顺序表的合并
- 顺序表的合并
- 顺序表的合并
- 数据结构线性表的综合实验——顺序表
- 实验2—顺序表的链式存储结构
- 实验1 线性表的顺序实现
- 实验一 合并顺序表
- /*顺序表的合并运算*/
- 数据结构-----顺序表的合并
- 顺序有序表的合并
- 实验二 线性表综合实验——顺序表
- 实验A—1 顺序表基本操作
- 配置终端VIM 文件
- 括号匹配检验
- 编译原理 ->实验1
- 实验1——顺序表例程
- Android数据库操作<一>
- 实验1——顺序表的合并
- 队列
- 数制转换
- 堆栈应用括号匹配实验
- 编译原理:实验二、集合与线性表操作
- Problem B: KMP算法综合应用--余庆
- Problem A: 串应用KMP算法
- wcf代理要不要用Open打开的一些解释
- Vector