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语言链表是一种基本的数据结构,与顺序表一样属于线性表,但是顺序表在内存中的存储单元是连续的,这样就对内存的要求 ...
随机推荐
- 自动删除几天前的备份集文件脚本 for windows
将以下内容根据自己想要备份的库修改后保存为del.bat,加入到计划任务中 @echo 删除指定路径下指定N天前的文件 @echo off@echo.------------------------- ...
- 076_Master Detail 与Lookup
- Supervisor进程守护监控部署
前言:Supervisor在百度百科上给的定义是超级用户,监管员.Supervisor是一个进程管理工具, 当进程中断的时候Supervisor能自动重新启动该进程.可以运行在各类Unix机器上,su ...
- JustAuth-第三方登录组件
1.新增依赖 <dependency> <groupId>me.zhyd.oauth</groupId> <artifactId>JustAuth< ...
- Web安全与渗透测试笔记
Web安全与渗透测试笔记 @author: lamaper 一.基本网络知识 (一)网络是怎样联通的 TCP/IP协议 Internet Http协议 (二)Http协议 http请求 一个完整的Ht ...
- Blockchain for Edge of Things: Applications, Opportunities, and Challenges
物联网:物联网设备,如传感器和手机,负责从物理环境中生成或收集数据,然后通过接入点或基站传输到附近的边缘服务器(ES).具有某些资源的物联网设备(例如,智能手机和笔记本电脑)可以充当移动区块链实体进行 ...
- 刘蓉年谱.PDF
书本详情 刘蓉年谱.PDF 所有责任者: 陆宝千著 所有题名: 并列正题名:A chronological biography of Liu JungChronological biography o ...
- 推荐ssh工具
介绍一些我常用的ssh工具 1.Xshell Xshell应该是一款家喻户晓的ssh连接工具,本人有幸也在很长一段时间都在使用Xshell,但是Xshell他是收费的!而且每次关闭后都会有一个提示 ...
- pycharm—python__________windows下安装
参考地址:https://www.runoob.com/w3cnote/pycharm-windows-install.html 一.安装python 1.pip 和 setuptools ...
- supervisor+gunicorn+uvicorn部署fastapi项目
一.编写一个项目 本项目是在虚拟环境下的: 先启动虚拟环境:source .venv/bin/activate.(创建虚拟环境自己去找) 项目用于演示,所以非常简单, 在虚拟环境中安装需要的第三方库: ...