任务描述 任务:在本章实现的顺序表类中增加连接两个线性表的功能,即将线性表(a0, a1, …, an-1)和(b0, b1, …, bm-1)合并成一个线性表(a0, a1, …, an-1, b0, b1, …, bm-1)。顺序表类的用户可以使用表达式C=A+B将线性表A和B归并后存入线性表C。 编程要求 根据提示,在右侧编辑器补充代码,合并两个顺序表。 请根据输入创建两个顺序表,按要求合并之后,遍历输出归并后的顺序表。 测试说明 平台会对你编写的代码进行测试: 测试输入: 1 2 3 4 5 6; 预期输出: 1 2 3 4 5 6 测试输入: 1 45 990 1 23 9 78; 预期输出: 1 45 990 1 23 9 78 注意:使用c++,实现的数据结构为顺序表,顺序表的内容可能为空,空表的输入为null。
时间: 2024-03-10 15:50:42 浏览: 145
线性表之顺序表合并.cpp
代码如下:
```c++
#include<iostream>
#include<cstring>
using namespace std;
#define MAXSIZE 1000
class SeqList{
private:
int data[MAXSIZE];
int length;
int maxsize;
public:
SeqList(int size = MAXSIZE){
maxsize = size;
length = 0;
}
int getLength(){
return length;
}
bool isEmpty(){
return length == 0;
}
bool isFull(){
return length == maxsize;
}
bool insert(int index, int element){
if(index < 0 || index > length || isFull()){
return false;
}
for(int i = length; i > index; i--){
data[i] = data[i-1];
}
data[index] = element;
length++;
return true;
}
bool remove(int index){
if(index < 0 || index >= length || isEmpty()){
return false;
}
for(int i = index; i < length-1; i++){
data[i] = data[i+1];
}
length--;
return true;
}
void clear(){
length = 0;
}
bool set(int index, int element){
if(index < 0 || index >= length || isEmpty()){
return false;
}
data[index] = element;
return true;
}
int get(int index){
if(index < 0 || index >= length || isEmpty()){
return -1;
}
return data[index];
}
void traverse(){
for(int i = 0; i < length; i++){
cout << data[i] << " ";
}
cout << endl;
}
SeqList operator+(const SeqList &list){
SeqList newList;
for(int i = 0; i < length; i++){
newList.insert(i, data[i]);
}
for(int i = 0; i < list.getLength(); i++){
newList.insert(length+i, list.get(i));
}
return newList;
}
};
int main(){
string s1, s2;
getline(cin, s1);
getline(cin, s2);
SeqList list1(MAXSIZE), list2(MAXSIZE);
int pos1 = 0, pos2 = 0;
for(int i = 0; i < s1.length(); i++){
if(s1[i] == ' '){
int num = stoi(s1.substr(pos1, i-pos1));
list1.insert(list1.getLength(), num);
pos1 = i+1;
}
}
int num = stoi(s1.substr(pos1, s1.length()-pos1));
list1.insert(list1.getLength(), num);
for(int i = 0; i < s2.length(); i++){
if(s2[i] == ' '){
int num = stoi(s2.substr(pos2, i-pos2));
list2.insert(list2.getLength(), num);
pos2 = i+1;
}
}
num = stoi(s2.substr(pos2, s2.length()-pos2));
list2.insert(list2.getLength(), num);
SeqList list3 = list1 + list2;
list3.traverse();
return 0;
}
```
阅读全文