C++实现有序表--链表的合并操作代码
#include<iostream>
#include<cstdlib>
using namespace std;
#define MAXSIZE 100
#define OK 1
#define ERROR 0
typedef int Elemtype;
typedef int Status;
typedef struct LNode//定义结点
{
Elemtype date;//数据域
struct LNode* next;//地址域
}LNode, * Linklist;
Status InitLinklist(Linklist& L);//初始化链表
Status CreateLinklist(Linklist& L, int i);//创建单链表
Status MergeLinklist(Linklist& La, Linklist& Lb, Linklist& Lc);//归并La和Lb得到Lc
Status PrintLinklist(Linklist L);//在单链表中打印元素
int main(void)
{
int a, b;
a = b = 0;
Linklist La, Lb, Lc;
InitLinklist(La);
InitLinklist(Lb);
InitLinklist(Lc);
cout << "创建链表La的长度为:";
cin >> a;
CreateLinklist(La,a);
PrintLinklist(La);
cout << "创建链表Lb的长度为:";
cin >> b;
CreateLinklist(Lb, b);
PrintLinklist(Lb);
MergeLinklist(La, Lb, Lc);
PrintLinklist(Lc);
return 0;
}
Status InitLinklist(Linklist& L)
{
L = new LNode;
L->next = NULL;
return OK;
}
/*Status CreateLinklist(Linklist& L, int i)
{
LNode* p;
cout << "\n输入单链表的数据为:";
for (int t = 0; t < i; t++)
{
p = new LNode;
cin >> p->date;
p->next = L->next;//前插
L->next = p;
}
return OK;
}*/
Status CreateLinklist(Linklist& L, int i)
{
LNode* p, * r;
r = L;//尾指针r指向头结点
cout << "\n输入单链表的数据为:";
for (int t = 0; t < i; t++)
{
p = new LNode;
cin >> p->date;
p->next = NULL;//尾插法
r->next = p;
r = p;
}
return OK;
}
Status MergeLinklist(Linklist& La, Linklist& Lb, Linklist& Lc)//归并La和Lb得到Lc
{
Lc = La;
LNode* pa, * pb, * pc;
pa = La->next, pb = Lb->next, pc = Lc;
while (pa && pb)//pa,pb都不为空
{
if (pa->date <= pb->date)//pa指向的数据小于或者等于pb指向的数据
{
pc->next = pa;
pc = pa;
pa = pa->next;
}
else
{
pc->next = pb;
pc = pb;
pb = pb->next;
}
}
pc->next = pa ? pa : pb;//将非空表的剩余段插入到pc
delete Lb;//释放Lb的头结点
return OK;
}
Status PrintLinklist(Linklist L)
{
LNode* p;
p = L->next;
if (L == NULL)
{
cout << "\n表不存在。";
return ERROR;
}
cout << "\n元素为:";
while (p != NULL)
{
cout << p->date << " ";
p = p->next;
}
return OK;
}
C++实现有序表--链表的合并操作代码的更多相关文章
- 去重合并两个有序链表之直接操作和Set集合操作
两者思路对比: 直接操作:因为传入的是两个有序的链表,所以说我就直接以其中一个链表为基准,与另外一个链表比较,只将比返回值链表的最后一个记录的值大的插入,不将等值的插入,理论时间复杂度为O(n) Se ...
- 【剑指offer】合并两有序单链表
转载请注明出处:http://blog.csdn.net/ns_code/article/details/25739727 九度OJ上AC,採用归并的思想递归实现. 题目描写叙述: 输入两个单调递增的 ...
- Java链表的一些操作:
[还有一些其他的算法提]http://blog.csdn.net/WalkingInTheWind/article/category/906980 [转]http://blog.csdn.net/lu ...
- C语言----------链表的简单操作
#include <stdio.h> #include <malloc.h> typedef struct node{ //定义节点类型 char data; //数据域 st ...
- bzoj 1483 [HNOI2009]梦幻布丁(链表+启发式合并)
1483: [HNOI2009]梦幻布丁 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 1818 Solved: 761[Submit][Status ...
- JAVA通过继承线性表来实现有序表
1,对于线性表而言,里面的元素是无序的,可以随意地将新元素增加到线性表中而不需要考虑该元素在线性表中的位置.但是,对于有序表而言,其中的元素是按照某种方式进行排序的,因此在有序表中插入元素时,需要按照 ...
- BZOJ 1483:[HNOI2009]梦幻布丁(链表启发式合并)
http://www.lydsy.com/JudgeOnline/problem.php?id=1483 题意:中文. 思路:对于每一种颜色,用一个链表串起来,一开始保存一个答案,后面颜色替换的时候再 ...
- 【实时数仓】Day05-ClickHouse:入门、安装、数据类型、表引擎、SQL操作、副本、分片集群
一.ClickHouse入门 1.介绍 是一个开源的列式存储数据库(DBMS) 使用C++编写 用于在线分析查询(OLAP) 能够使用SQL查询实时生成分析数据报告 2.特点 (1)列式存储 比较: ...
- 查找(顺序表&有序表)
[1]查找概论 查找表是由同一类型是数据元素(或记录)构成的集合. 关键字是数据元素中某个数据项的值,又称为键值. 若此关键字可以唯一标识一个记录,则称此关键字为主关键字. 查找就是根据给定的某个值, ...
- c语言,数据结构,链表的一些操作总结
下面是自己的一些学习操作以及总结,能用我会很开心,有不足之处,欢迎大家提出宝贵的意见! c语言链表是一种基本的数据结构,与顺序表一样属于线性表,但是顺序表在内存中的存储单元是连续的,这样就对内存的要求 ...
随机推荐
- springcloud zuul网关整合swagger2,swagger被拦截问题
首先感谢一位博主的分享https://www.cnblogs.com/xiaohouzai/p/8886671.html 话不多说直接上图和代码 首先我们要有一个springcloud分布式项目 我就 ...
- 富文本编辑器第一次正常显示,第二次渲染失败 -----在使用laravel-admin 时
第二次显示 解决方法: 在每次获取富文本编辑器实例的时候,先删除一下,避免之前已经实例化造成的渲染失败
- java 将yyyyMMddHHmmss转化为yyyy-MM-dd HH:mm:ss格式的字符串
思路很简单:先转化为yyyyMMddHHmmss格式的Date类型,再格式化为yyyy-MM-dd HH:mm:ss格式的字符串类型 import java.text.DateFormat; impo ...
- JMeter压力测试之环境搭建、脚本调试及报错解决方法(Linux版)
一.环境部署 后续往服务器上传文件,本文中使用的是xftp,因其不是本文所要讲述的重点,这里不做详解. 第一步:安装所需要版本的JDK,本次使用的是JDK 1.8 下载地址:http://www.or ...
- SimplCommerce 核心
EF配置 using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks ...
- C# 前台线程 后台线程区别
前台线程 会随进程一起结束 不管是否完成,后台线程需要执行完毕,进程才能结束 例子: class Program { static void Main(string[] args) { Thread ...
- OS-lab1
OS-lab1 boot boot文件夹中只有start.S文件,这个文件用于初始化内核.关掉中断,设置内核栈,并跳转到main函数. init init.c 执行初始化操作. main.c 主函数, ...
- 403 forbidden 与 413Too Large
http://www.ccschy.com/shuma/12846.html https://blog.51cto.com/u_15127556/4543159 查的有关资料如下,最后的原因是服务器网 ...
- firefox 安装旧版flash播放器
国内恶心的特供版flash用是不可能在用了,用旧版的火狐和旧版的flash播放器,亲测可用. 下载旧版本的火狐浏览器67.04 https://ftp.mozilla.org/pub/firefox/ ...
- java表达式语言mvel2/ognl/spring-expression
<!-- https://mvnrepository.com/artifact/org.mvel/mvel2 --><dependency> <groupId>or ...