文档章节

208MergeList

把南墙撞开
 把南墙撞开
发布于 2016/05/11 10:07
字数 349
阅读 43
收藏 0

精选30+云产品,助力企业轻松上云!>>>

新建一个项目,创建文件mergeList.cpp。

代码中要包含项目“204LinkList”中的文件

 

//mergeList.cpp
#include"C:\Users\Administrator\Documents\Visual Studio 2013\Projects\204LinkList\204LinkList\c1.h"
#include"C:\Users\Administrator\Documents\Visual Studio 2013\Projects\204LinkList\204LinkList\elemtype.h"
#include"C:\Users\Administrator\Documents\Visual Studio 2013\Projects\204LinkList\204LinkList\c2-2.h"
#include"C:\Users\Administrator\Documents\Visual Studio 2013\Projects\204LinkList\204LinkList\bo2-2.cpp"
#include"C:\Users\Administrator\Documents\Visual Studio 2013\Projects\204LinkList\204LinkList\function.h"

//insert elements into head
void CreateHeadList(LinkList &L, int n)
{
	LinkList p;
	L = (LinkList)malloc(sizeof(LNode));
	L->next = nullptr;
	for (int i = 0; i < n; i++)
	{
		p = (LinkList)malloc(sizeof(LNode));
		cin >> p->data;
		p->next = L->next;
		L->next = p;
	}
}

//insert elements into tail
void CreateTailList(LinkList &L, int n)
{
	LinkList p, q;
	L = (LinkList)malloc(sizeof(LNode));
	q = L;
	for (int i = 0; i < n; i++)
	{
		p = (LinkList)malloc(sizeof(LNode));
		cin >> p->data;
		q->next = p;
		q = q->next;
	}
	q->next = nullptr;	
}

void MergeList(LinkList La, LinkList &Lb, LinkList &Lc)
{
	LinkList pa = La->next, pb = Lb->next, 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;
		}
	}
	pc->next = pa ? pa : pb;
	free(Lb);
	Lb = La = nullptr;
}

int main()
{
	int n = 5;
	LinkList La, Lb, Lc;

    cout << "head insert" << endl;
	CreateHeadList(La, n);
	ListTraverse(La, print);
	cout << endl;

    cout << "tail insert" << endl;
	CreateTailList(Lb, n);
	ListTraverse(Lb, print);
	cout << endl;
	MergeList(La, Lb, Lc);
	ListTraverse(Lc, print);
	cout << endl;
	
	cin.get();
	cin.get();
	return 0;
}

 

下一篇: 207MergeList
把南墙撞开
粉丝 0
博文 73
码字总数 21068
作品 0
昌平
私信 提问
加载中
请先登录后再评论。

暂无文章

Java知识点--卫语句

在《阿里巴巴Java开发手册》中强制规定:超过 3 层的 if-else 的逻辑判断代码可以使用卫语句、策略模式、状态模式等来实现,其中卫语句即代码逻辑先考虑失败、异常、中断、退出等直接返回的情...

HLee
39分钟前
9
0
实施与扩展:何时使用? 有什么不同? - Implements vs extends: When to use? What's the difference?

问题: 请用一种易于理解的语言或一些文章的链接进行解释。 解决方案: 参考一: https://stackoom.com/question/jTkh/实施与扩展-何时使用-有什么不同 参考二: https://oldbug.net/q/jTkh/...

技术盛宴
40分钟前
3
0
剑指offer之队列中的最大值(C++/Java双重实现)

1.题目描述 请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value、push_back 和 pop_front 的均摊时间复杂度都是O(1)。 若队列为空,pop_front 和 max_value 需要返回...

osc_jvzgahav
42分钟前
5
0
JAVA-过滤器和拦截器1

1、过滤器 (Filter) 过滤器的配置比较简单,直接实现 Filter 接口即可,也可以通过 @WebFilter 注解实现对特定 URL 拦截,看到 Filter 接口中定义了三个方法。 init() :该方法在容器启动初始...

osc_hinb5m98
44分钟前
21
0
模拟红包算法(基于BigDecimal、DecimalFormat、Random类)

基于BigDecimal、DecimalFormat、Random实现模拟红包算法 RedPacket 类 import java.math.BigDecimal;import java.text.DecimalFormat;import java.util.ArrayList;import java.util.Rand......

osc_ml6lx2h4
45分钟前
12
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部