栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

算法2.1 合并两个线性表 C++实现

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

算法2.1 合并两个线性表 C++实现

#include
using namespace std;
int const MAX_SIZE = 100;
struct ListNode {                            //定义线性表的结构体
	int val;
};
class MyList {                               //定义线性表的类
private:
	ListNode* L;
	int length;
public:
	MyList();
	~MyList();
	void CreatList(int n);                            //创建线性表
	void MergeList(MyList& L1, MyList& L2, MyList& L3); //合并线性表
	void print();                                       //打印线性表
};
void MyList::print() {
	if (length == 0) {
		cout << "NULL LIST" << endl;
		return;
	}
	else {
		for (int i = 1; i <= length; i++) {
			cout << L[i].val << " ";
		}
		cout << endl;
	}
}
void MyList::CreatList(int n) {
	length = n;
	cout << "输入数组中的值:" << endl;
	for (int i = 1; i <= n; i++) {
		//cout << "输入第" << i << "个值: ";
		cin >> L[i].val;
	}
}
MyList::MyList() {
	L = new ListNode[MAX_SIZE];
	length = 0;
}
MyList::~MyList(){
	length = 0;
	delete[] L;
}
void MyList::MergeList(MyList& L1, MyList& L2, MyList& L3) {    //将两个不递减的线性表按照不递减的顺序放到新的线性表中
	int i = 1, j = 1, k = 0;;                                  
	int la = L1.length, lb = L2.length;
	L3.length = L1.length + L2.length;
	while (i <= la && j <= lb) {                       //分别遍历两个线性表
		if (L1.L[i].val < L2.L[j].val) {               //若L1的val 小于L2的val,L3的val中放入L1的val
			L3.L[++k].val = L1.L[i].val;
			i++;
		}
		else {                                        //若L2的val 小于L1的val,L3的val中放入L2的val
			L3.L[++k].val = L2.L[j].val;
			j++;
		}
	}
	while (i <= la) {
		L3.L[++k].val = L1.L[i].val;
		i++;
	}
	while (j <= lb) {
		L3.L[++k].val = L2.L[j].val;
		j++;
	}
}
void implement() {
	MyList L1, L2, L3;
	int n1, n2;
	cout << "输入L1 的大小" << endl;
	cin >> n1;
	cout << "输入L2 的大小" << endl;
	cin >> n2;
	L1.CreatList(n1);
	L2.CreatList(n2);
	L3.MergeList(L1, L2, L3);
	L3.print();
}
int main() {
	implement();
}

测试结果:

ps:核心思路就是:同时开始遍历两个线性表,并比较两个线性表的val值,小的先放到新的线性表中,大的继续比较。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/850171.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号