C语言实现合并两个有序(从小到大)顺序表为一个顺序表
#include<stdio.h>
#include<malloc.h> typedef int ElemType;
typedef int status;
# define LIST_INIT_SIZE 100
# define OK 1
# define OVERFLOW -1typedef struct{ElemType *elem;int length;int listsize;
} SqList;//初始化线性表
status InitList_Sq(SqList *L){L-> elem = (ElemType *)malloc(LIST_INIT_SIZE * sizeof(ElemType)) ;if(!L->elem) exit(OVERFLOW);L->length = 0;L->listsize = LIST_INIT_SIZE;return OK;
}//创建有序表并为其赋值
void Create_sq(SqList *L){int i,n;printf("创建一个有序表!\n");printf("输入有序表里的元素个数:");scanf("%d",&n);L->length = n;for(i=0;i < n;i++){printf("输入第%d个元素的值:",i+1);scanf("%d",&L->elem[i]);printf("\n");}
}//打印有序表
void Disp_Sq(SqList L){int i,n;n = L.length;for(i=0;i<n;i++){printf("%5d",L.elem[i]);}printf("\n");
}//合并有序表
void Combine(SqList *la,SqList lb){int i = la->length - 1,j = lb.length - 1; while(i >= 0 && j >= 0){if(la->elem[i] <= lb.elem[j]){if (!la->elem[i + 1]){ la->elem[i + 1] = lb.elem[j];}else{for (int k = la->length - 1; k >= i+1; --k){la->elem[k +1] = la->elem[k];}la->elem[i + 1] = lb.elem[j];}la->length++;j--; }else{i--;}}
}main(){SqList sla;SqList slb;InitList_Sq(&sla);InitList_Sq(&slb);Create_sq(&sla);Create_sq(&slb);Combine(&sla,slb);Disp_Sq(sla);
}
运行结果:
C语言实现合并两个有序(从小到大)顺序表为一个顺序表相关推荐
- C语言怎么合并两个有序链表
C语言合并两个有序链表的方法:拼接指定的两个有序链表的所有节点即可.例如两个有序链表分别为[1->2->4]和[1->3->4],合并后的有序链表为[1->1->2 ...
- [PHP] 算法-合并两个有序链表为一个有序链表的PHP实现
合并两个有序的链表为一个有序的链表: 类似归并排序中合并两个数组的部分 1.遍历链表1和链表2,比较链表1和2中的元素大小 2.如果链表1结点大于链表2的结点,该结点放入第三方链表 3.链表1往下走一 ...
- LeetCode 21.23.剑指 Offer II 078. 合并两个有序链表 | C语言版
LeetCode 21. 合并两个有序链表 | C语言版 LeetCode 21. 合并两个有序链表 题目描述 解题思路 思路一:使用栈 代码实现 运行结果 参考文章: 思路二:减少遍历节点数 代码实 ...
- 合并两个有序链表 C语言 leetcode21题
目录 1.题目来源 2.函数介绍 3.问题示例 4.函数实现 代码 1.题目来源 21. 合并两个有序链表 - 力扣(LeetCode)https://leetcode.cn/problems/mer ...
- 简单记录牛客top101算法题(初级题C语言实现)判断回文字符串 反转字符串 合并两个有序的数组
1. 判断是否为回文字符串 给定一个长度为 n 的字符串,请编写一个函数判断该字符串是否回文.如果是回文请返回true,否则返回false. 字符串回文指该字符串正序与其逆序逐字符一致. // ...
- LeetCode题组:第21题-合并两个有序链表
1.题目:合并两个有序链表 将两个升序链表合并为一个新的升序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2->4, 1->3->4 输出: ...
- 两个有序链表序列的交集_LeetCode | 21.合并两个有序链表
点击上方蓝字关注我们 1.LeetCode | 2.两数相加 2.LeetCode | 206.反转链表 3.LeetCode | 1.两数之和 4.LeetCode | 703.数据流中的第K大元素 ...
- LeetCode--88.合并两个有序数组(插入法,排序法)
合并两个有序数组(C, Python) 1. 题目描述 2. 题目分析 3. C语言实现 4. Python语言实现 1. 题目描述 难度:简单 2. 题目分析 这道题比较简单,实现方法有两种: 插入 ...
- C++合并两个有序数组成一个有序数组时间复杂度最小的解法
简单来说,时间复杂度最低为O(m+n)== m和n指的是两个有序数组的大小 代码实现: //输出结果 template<class T> void PrintVecResult(vecto ...
最新文章
- 2018.1.9 区块链论文翻译
- 《Microsoft Sql server 2008 Internals》读书笔记--第八章The Query Optimizer(5)
- jvm系列(十):如何优化Java GC「译」
- php动态网页转换成html,怎么把动态的php文件转换成静态的html文件,html文件是php文件…...
- 【实验】DHCP、NAT配置案例
- easyexcel 导出 代码翻译converter_啥?这么简单高效的Excel 导出工具都不知道? 还不快来看!
- C语言已排序链表插入新节点保持排序状态(附完整源码)
- Web开发-Django初识及实战
- 带中文索引的ListView 仿微信联系人列表
- Android之进程与线程的讲解
- 阿里大神最佳总结Flutter进阶学习笔记,技术详细介绍
- React开发(252):react项目理解 ant design spining加载中
- linux进程状态浅析
- python增删改查
- matlab流量结构分析,科学网-分享求解“结构分解分析(SDA)”各项均值的MATLAB程序-计军平的博文...
- 从零开始刷Leetcode——数组(189.217.219)
- xshell远程控制(连接)两个VMware同时启动的Linux操作系统
- SLAM精度测评(绘制比较相机轨迹)- EVO
- 【人脸识别】基于matlab GUI FISHER人脸识别【含Matlab源码 605期】
- Cat8八类网线是什么?与Cat5、Cat6、Cat7网线的区别?