线性表——链式存储结构合并操作_合并线性表链式存储思路_阿基美德的博客-程序员秘密

技术标签: 数据结构  

     采取的结构和上一篇博文一致,均为单链表存储结构。
  
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#define ElemType int
#define Status int

#define ERROR 0
#define OK 1

using namespace std;

typedef struct LNode {
	ElemType data;
	struct LNode *next;
}LNode, *LinkedList;

void MergeList_L(LinkedList &La, LinkedList &Lb, LinkedList &Lc)
{
	LNode *pa = La->next;
	LNode *pb = Lb->next;
	LNode *pc;
	Lc =pc=La;
	while (pa&&pb)
	{
		if (pa->data <= pb->data)
		{
			pc->next = pa;
			pc = pa;
			pa = pa->next;
		}
		else
		{
			pc->next = pb;
			pc = pb;
			pb = pb->next;
		}
	}
	while (pa)
	{
		pc->next = pa;
		pc = pa;
		pa = pa->next;
	}
	while (pb)
	{
		pc->next = pb;
		pc = pb;
		pb = pb->next;
	}
	free(pb);
	free(pa);
}

//正序创建线性表,算法2.11
void CreateList_L(LinkedList &L, int n)
{
	L = (LinkedList)malloc(sizeof(LNode));
	L->next = NULL;
	for (int i = 0; i <n; ++i)
	{
		LNode *q = (LinkedList)malloc(sizeof(LNode));
		cin >> q->data;
		q->next = L->next;
		L->next = q;
	}
}

void swap(ElemType &a, ElemType &b)
{
	ElemType c = a;
	a = b;
	b = c;
}

//排序
void ListSort(LinkedList &L)
{
	if (L == NULL || L->next == NULL)
		return;
	LNode *pstart = new LNode();
	pstart->next = L;
	LNode *sortedTail = pstart;

	while (sortedTail->next != NULL)
	{
		LNode *minNode = sortedTail->next;
		LNode *p = sortedTail->next->next;
		while (p != NULL)
		{
			if (p->data < minNode->data)
				minNode = p;
			p = p->next;
		}
		swap(minNode->data, sortedTail->next->data);
		sortedTail = sortedTail->next;
	}
	L = pstart->next;
	delete pstart;
}
//输出线性链表
void PrintList_L(LinkedList &L)
{
	LNode *p = L->next;
	while (p)
	{
		cout << p->data << " ";
		p = p->next;
	}
	cout << endl;

}
void main()
{
	int na, nb;
	LinkedList La, Lb, Lc;
	cout << "La的元素个数:";
	cin >> na;
	cout << "La线性链表元素:" << endl;
	CreateList_L(La, na);
	ListSort(La);
	PrintList_L(La);

	cout << "Lb的元素个数:";
	cin >> nb;
	cout << "Lb线性链表元素:" << endl;
	CreateList_L(Lb, nb);
	ListSort(Lb);
	PrintList_L(Lb);

	MergeList_L(La, Lb, Lc);
	cout << endl;
	cout << "La,Lb链接成Lc,Lc链表:" << endl;
	PrintList_L(Lc);

	system("pause");
}

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/X_blackbutterfly/article/details/80527183

智能推荐

StringUtils类中的isEmpty和isNotEmpty以及相关的_memory丶of的博客-程序员秘密

StringUtils方法的操作对象是java.lang.String类型的对象,是JDK提供的String类型操作方法的补充,并且是null安全的(即如果输入参数String为null则不会抛出NullPointerException,而是做了相应处理,例如,如果输入为null则返回也是null等,具体可以查看源代码)。

git 使用http 和 ssh 区别_git ssh和http区别_木鱼僧的博客-程序员秘密

在管理Git项目上,很多时候都是直接使用https url克隆到本地,当然也有有些人使用SSH url克隆到本地。这两种方式的主要区别在于:使用https url克隆对初学者来说会比较方便,复制https url然后到git Bash里面直接用clone命令克隆到本地就好了,但是每次fetch和push代码都需要输入账号和密码,这也是https方式的麻烦之处。而使用SSH url克隆却需要在克隆之...

查看不到网络上的计算机和设备,Win10 无法看到局域网中的其他计算机及网络打印机..._青山布衣的博客-程序员秘密

硬件是Surface Pro 3,系统是最近升级的Win10。注1: 在升级前也有同样的毛病,升级Win10后起初的几天正常了,但是不知道哪一天老毛病又犯。注2: 用Win8.1的时候以前也是好的,大概3个月前开始有这个毛病的.具体为:1)打开资源管理器 &gt; (左边栏)网络,看不到局域网中的计算机了。只能看到媒体设备和其他设备。2)在资源管理器的地址栏输入(以计算机名为ea_nas01为例)...

本次考试总结(2017.8.15上午考试)(noip2016真题)_lsb20060209的博客-程序员秘密

童鞋们好,胖嘟嘟的刘嘟嘟老师又回来了! 欢迎来到嘟嘟课堂。 此套题出的非常的好。 第一题很水,很考察细心。注意有些铅笔要div 3+1。 比赛时轻轻松松的AC。 第二题很烦,很考察耐心。 比赛时有点想放弃,搞了一个多小时,写了200行但最终坚持下来了。坚持就是胜利! 但还是不够细心,还有一个情况木有判断,比赛时只过了60分。 “水法真神奇,暴力出奇迹。”!!! 第三题中等偏难,很考

Inf2vec: Latent Representation Model for Social Influence Embedding_梦否的博客-程序员秘密

Inf2vec: Latent Representation Model for Social Influence Embedding2018 IEEE 34th International Conference on Data Engineering1. 前言感觉这篇文章和自己之前做的研究方向挺相似的,所以这里想更加细致的看看这个工作,看有什么不同。且有什么值得注意和改进的。所以,看这篇论文的目标是:完全理解这篇文章在做什么;理清楚和自己之前做的工作有什么本质上或者表面上的区别;代码复现;

随便推点

springboot实现登录界面_springboot简单登录页面_普通网友的博客-程序员秘密

提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考如果运行出现异常的话 如:500 多半是pom依赖错了 多换几个版本 最新的最好,亲测有效。

git pull fatal: unable to access 'https://xxxxxxxx': The requested URL returned error:502_qq_184177677的博客-程序员秘密

fatal: unable to access ‘https://xxxxxxxx’: The requested URL returned error:502很大一部分原因是在首次提交代码时把账号密码打错了解决办法:1、点击WIN10左下角的开始选项,选择设置。2、搜索管理Web凭据。3、选择Windows凭据,对应修改git的账号密码。4、最后到git中重新操作就好啦~...

SwiftUI AppStorage 基础使用(教程含代码)_知识大胖的博客-程序员秘密

AppStorage属性包装程序类型,它反映UserDefaults中的值并使该用户默认值中的值更改视图无效。@frozen @propertyWrapper struct AppStorage&lt;Value&gt;使用教程目前官方没有给出样例,后续有demo了,我再进行补充。推荐基础文章推荐《SwiftUI是什么,听听大牛们如何说》经典教程推荐更新近百篇SwiftUI教程《SwiftUI2020教程》帮您突破数据存储难关《SwiftUI vs CoreData数据存储解决方

自定义控件Camera+Matrix实现3D旋转及百叶窗效果(雷惊风)_刘永雷的博客-程序员秘密

上篇文章说到了用ViewPager实现3D旋转效果,本篇文章说一下自定义View+Camera+Matrix来实现更炫酷一点的效果,3D及百叶窗效果,其实还可以实现许多其他的效果。最后会将实例代码附在文章最后。先看一下最终实现的一个效果:这里说的Camera并不是相机,而是android.graphics.Camera类,它内部包含一个Matrix,它的源码很简单,也就不到200行

javaScript 双感叹号用法_阿冰介的博客-程序员秘密

在偶尔看源码的过程中。看到有些判断的用法是:var a;if(!!a){ console.log('打印')}为什么要用两个感叹号()呢?因为js 是弱类型,单纯用一个! 感叹号去转义可能会发生不必要的错误这是知乎上的某个比较好的总结双感叹号才能真正的将他转换成对应的Boolean值,第一个感叹号是将其转化成Boolean类型的值,但是这一操作得到的是其取...

【Java&Android开源库代码剖析】のAndroid-Universal-Image-Loader-part1_安卓开源代码库_yangxi_001的博客-程序员秘密

做Android app开发的同学应该都听说过或者用过nostra13的Android-Universal-Image-Loader开源库,它在图片异步加载、缓存和显示等方面提供了强大灵活的框架。之前介绍过的android-smart-image-view开源库跟它比起来,真是小巫见大巫了,不仅在功能上,而且在代码量上都差别很大。当然我们在选取开源库的时候并不是功能越强大越好,一切都要看具体需求,

推荐文章

热门文章

相关标签