[数据结构] 两个有序线性表的合并
时间:2022-07-22
本文章向大家介绍[数据结构] 两个有序线性表的合并,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Question
【问题描述】
编制一个能演示将两个有序表合并为一个有序表的程序。
【基本要求】
已知递增有序线性表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<stdio.h>
#include<stdlib.h>
//构建线性表结构
typedef struct LNode *List;
struct LNode{
int data[1000];
int last;
};
//生成线性表
List createList(int arr[],int arrLen){
List L= (List)malloc(sizeof(struct LNode));
L->last=0;
for(int i=0;i<=arrLen;i++){
L->data[L->last]=arr[i];
L->last++;
}
return L;
}
//合并两个线性表
List mergeList(List L1,List L2){
List L = (List)malloc(sizeof(struct LNode));
L->last=0;
int j=0,k=0;
while(j<L1->last && k<L2->last){
if(L1->data[j]==L2->data[k]){
L->data[L->last]=L1->data[j];
j++;
k++;
}else if(L1->data[j]<L2->data[k]){
L->data[L->last]=L1->data[j];
j++;
}else{
L->data[L->last]=L2->data[k];
k++;
}
L->last++;
}
while(j<L1->last){
L->data[L->last]=L1->data[j];
j++;
L->last++;
}
while(k<L2->last){
L->data[L->last]=L2->data[k];
k++;
L->last++;
}
return L;
}
int main(void){
int a[100],b[100];
char temp;
int countA=0,countB=0;
printf("请输入第一个递增有序线性表: ");
while(scanf("%d%c",&a[countA],&temp),temp!='n'){
countA++;
}
printf("请输入第二个递增有序线性表: ");
while(scanf("%d%c",&b[countB],&temp),temp!='n'){
countB++;
}
List L1=createList(a,countA);
List L2=createList(b,countB);
List L = mergeList(L1,L2);
printf("合并后的线性表为: %d",L->data[0]);
for(int i=1;i<L->last;i++){
printf(" %d",L->data[i]);
}
}
- 【LEETCODE】模拟面试-101-Symmetric Tree
- Docker系列教程10-使用Docker Registry管理镜像
- webapp开发调试环境--weinre配置
- AWK 深入浅出教程
- Docker系列教程09-使用Docker Hub管理镜像
- C++11基础学习系列一
- 触屏touchstart 与 click
- Linux DNS之dig利器
- Docker系列教程08-Dockerfile实战
- VirtualBox和Vmware安装增强功能
- 事件委托与阻止冒泡
- Linux网络工具之Ping命令
- Linux DNS之nslookup命令
- 【LEETCODE】模拟面试-108-Convert Sorted Array to Binary Search Tree
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 修改Android Studio 的 Logcat 缓冲区大小操作
- Android自定义View验证码输入框
- PHP生成随机字符串实例代码(字母+数字)
- Laravel框架中缓存的使用方法分析
- android实现搜索功能并将搜索结果保存到SQLite中(实例代码)
- Android实现全局右滑返回
- Android实现打地鼠小游戏
- android实现手机传感器调用
- Android实现接近传感器
- PHP 模拟登陆功能实例详解
- PHP判断一个变量是否为整数、正整数的方法示例
- android实现打地鼠游戏
- Yii框架连表查询操作示例
- Android studio listview实现列表数据显示 数据循环显示效果
- 关于Curl在Swoole协程中的解决方案详析