DS 顺序表--合并操作(C++数据结构题)

Description

建立顺序表的类,属性包括:数组、实际长度、最大长度(设定为 1000
已知两个递增序列,把两个序列的数据合并到顺序表中,并使得顺序表的数据递增
有序

Input

1 行先输入 n 表示有 n 个数据,接着输入 n 个数据,表示第 1 个序列,要求数据
递增互不等
2 行先输入 m 表示有 m 个数据,接着输入 m 个数据,表示第 2 个序列,要求数
据递增互不等

Output

顺序表内容包括顺序表的实际长度和数据,数据之间用空格隔开
1 行输出创建后的顺序表内容

Sample Input

3 11 33 55

5 22 44 66 88 99

Sample Output

8 11 22 33 44 55 66 88 99

思路:

创建两个对象,分别存储着两组数据,其中A对象通过调用add方法,传B对象,将B对象的数据存入A中,A中的list数组进行排序然后输出。

AC代码:

#include
#include 
#include
using namespace std;
#define ok 0
#define error -1
// 顺序表类定义
class SeqList
{
private:
	int* list; // 元素数组
	int maxsize; // 顺序表最大长度
	int size; // 顺序表实际长度
public:
	SeqList(); // 构造函数
	~SeqList(); // 析构函数
	int list_size() {
		return size;
	}; // 获取顺序表实际长度

	void set(int length) {
		this->size = length;
		for (int i = 0; i < length; i++) {
			cin >> *(list + i);
		}
	}//用于初始化数组

	void add(SeqList *t) {
		for (int i = size; i < size + t->size; i++) {
			*(list + i) = *(t->list + i - size);
		}
		for (int i = 0; i < size + t->size; i++) {
			for (int j = i; j < size + t->size; j++) {
				if (*(list + i) > *(list + j)) {
					int temp;
					temp = *(list + i);
					*(list + i) = *(list + j);
					*(list + j) = temp;
				}
			}
		}
		size += t->size;
		cout << size << " ";
		list_display();
	}

	void list_display() {
		for (int i = 0; i < size; i++) {
			cout << *(list + i);
			if (i != size - 1) {
				cout << " ";
			}
		}
		cout << endl;
	}; // 输出整个顺序表
};
SeqList::SeqList()
{
	maxsize = 1000;
	size = 0;
	list = new int[maxsize];
}
SeqList::~SeqList()
{
	delete []list;
}

int main() {
	int a, b;
	SeqList *q = new SeqList;
	SeqList *p = new SeqList;
	cin >> a;
	p->set(a);
	cin >> b;
	q->set(b);
	p->add(q);
	return 0;
}

你可能感兴趣的:(C++,数据结构,c++,数据结构,开发语言)