合并两个有序表--顺序表
【问题描述】
编制一个能演示将两个有序表合并为一个有序表的程序。
【基本要求】
已知递增有序线性表LA和LB,现将LA和LB合并到LC,LC也是递增有序的。
【测试数据】
LA=(3,5,8,11) LB=(2,6,8,9,11,15,20)
合并后的LC=(2,3,5,6,8,9,11,15,20)
代码:
#include<bits/stdc++.h>
const int MaxSize=100;
using namespace std;
typedef int ElemType;
typedef struct
{ElemType data[MaxSize];int length;
}SqList;void CreateList(SqList *&A,ElemType c[],int n)
{int i;A=(SqList *)malloc(sizeof(SqList));for(i=0;i<n;i++)A->data[i]=c[i];A->length=n;
}void UnionList(SqList *&L,SqList *&R,SqList *&E)
{int i,j,k;E=(SqList *)malloc(sizeof(SqList));for(i=0,j=0,k=0;i<L->length && j<R->length;k++){if(L->data[i]<R->data[j])E->data[k]=L->data[i++];else if(R->data[j]<L->data[i])E->data[k]=R->data[j++];else if(R->data[j]==L->data[i])E->data[k]=L->data[i++],j++;}while(i<L->length)E->data[k++]=L->data[i++];while(j<R->length)E->data[k++]=R->data[j++];E->length=k;
}void DispList(SqList *&E)
{int i;for(i=0;i<E->length;i++)cout << E->data[i] << " ";cout << endl;
}int main()
{SqList *L,*R,*E;ElemType a[]={3,5,8,11},b[]={2,6,8,9,11,15,20};CreateList(L,a,4);CreateList(R,b,7);UnionList(L,R,E);DispList(E);return 0;
}
合并两个有序表--顺序表相关推荐
- 合并两个有序的线性表
bool Mergesqlist(Dpsqlist pa, Dpsqlist pb, Dpsqlist pc) { int i = 0;//pa的下标 int j = 0;//pb的下标 int k ...
- 数据结构一线性表 (顺序表、单链表、双链表)
版权声明:本文为openXu原创文章[openXu的博客],未经博主允许不得以任何形式转载 文章目录 1.线性表及其逻辑结构 1.1 线性表的定义 1.2 线性表的抽象数据类型描述 2.线性表的顺序存 ...
- 合并两个有序链表(递归)
合并两个有序链表(递归) 题目描述 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例 输入:1->2->4, 1->3->4 ...
- 《LeetCode力扣练习》第21题 合并两个有序链表 Java
<LeetCode力扣练习>第21题 合并两个有序链表 Java 一.资源 题目: 将两个升序链表合并为一个新的 升序 链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例 ...
- 线性表---顺序表链表
一.线性表 1.线性表中的元素是一对一的关系,除了第一个与最后一个元素之外其他数据元素都是首尾相连的. 如果是一对多就用树来表示,如果是多对多就用网状来表示. 2.线性表的两种存储结构 顺序表:用顺序 ...
- 牛客题霸 [合并两个有序的数组] C++题解/答案
牛客题霸 [合并两个有序的数组] C++题解/答案 题目描述 给出两个有序的整数数组 和 ,请将数组 合并到数组 中,变成一个有序的数组 注意: 可以假设 数组有足够的空间存放 数组的元素, 和 中初 ...
- 经典算法——合并两个有序单向链表
1.题目要求 这是一道求职面试时经常要求手写或者机试的经典题目. 已知两个链表 head1 和 head2 各自有序,请把它们合并成一个链表依然有序.结果链表要包含 head1 和head2 的所有节 ...
- 【合并两个有序的子数组】算法实现
[合并两个有序的子数组] View Code 1 #include<iostream.h> 2 void merge(int array[],int p,int q,int r,int ...
- 力扣——合并两个有序数组
合并两个有序数组 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目. 请你 合并 nums2 到 nu ...
- 力扣——合并两个有序链表
合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例 1: 输入:l1 = [1,2,4], l2 = [1,3,4] 输出:[1, ...
最新文章
- 动态开辟二维数组的两种方案及位体
- 集合 判断是否为同一元素 总结
- 云网融合 — 电信网络云
- is_numeric函数的引起的一个BUG说起
- 二分+并查集【bzoj3007】[SDOI2012]拯救小云公主
- spring mvc hello
- c#获取当前时间 毫秒_《Linux设备驱动程序》(十二)——时间操作(一)
- 信创产业发展应不忘初心牢记使命
- golang并发官方示例
- Python学习笔记(三)Python安装及设置环境变量
- 阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第4节 等待唤醒机制_9_等待唤醒机制代码实现_吃货类测试类...
- Linux C 信号量
- Ubantu18.04
- 解密“达达-京东到家”的订单即时派发技术原理和实践
- Word 中给公式自动编号
- ffmpeg mp4 mp3 wav flac webm aac ac3 ogg格式转换
- socketio单聊,群聊
- 敏捷个人2012.1月份线下活动报道:谈谈职业
- Zabbix怎么监控奇安信网神防火墙
- 最强chrome、edge的广告拦截插件