题目描述
用C++语言和类实现顺序表
属性包括:数组、实际长度、最大长度(设定为1000)
操作包括:创建、插入、删除、查找
类定义参考
输入
第1行先输入n表示有n个数据,即n是实际长度;接着输入n个数据
第2行输入要插入的位置和新数据
第3行输入要插入的位置和新数据
第4行输入要删除的位置
第5行输入要删除的位置
第6行输入要查找的位置
第7行输入要查找的位置
6 11 22 33 44 55 66
3 777
1 888
1
9
0
5
输出
数据之间用空格隔开
第1行输出创建后的顺序表内容,包括顺序表实际长度和数据
每成功执行一次操作(插入或删除),输出执行后的顺序表内容
每成功执行一次查找,输出查找到的数据
如果执行操作失败(包括插入、删除、查找等失败),输出字符串error,不必输出顺序表内
6 11 22 33 44 55 66
7 11 22 777 33 44 55 66
8 888 11 22 777 33 44 55 66
7 11 22 777 33 44 55 66
error
error
44
#include <iostream>
using namespace std;
#define ok 0
#define error -1
//顺序表定义
class Seqlist
{
int* list;//元素数组
int maxsize;//顺序表最大长度
int size;//顺序表实际长度
public:
Seqlist();
Seqlist(int *list,int size);
~Seqlist();
int listsize();
int listinsert(int i, int item);//插入元素,数值:item,位置:i
int listdel(int i);//删除第i个元素
int listget(int i);//获取第i个元素
void listdisplay();
};
Seqlist::Seqlist()
{
maxsize = 1000;
size = 0;
list = new int[maxsize];
}
Seqlist::Seqlist(int* l, int s)
{
size = s;
maxsize = 1000;
list = new int[maxsize];//一定要定义为maxsize,否则会导致溢出
for (int i = 0; i < s; i++)
{
list[i] = l[i];
}
}
Seqlist::~Seqlist()
{
delete[]list;
}
int Seqlist::listsize()
{
return size;
}
int Seqlist::listinsert(int i, int item)
{
if (i > size + 1 || i < 1)//i是第i个,而数组从0开始
{
cout << "error" << endl;
return error;
}
size++;
for (int j = size; j >= i; j--)
{
list[j] = list[j - 1];//后一元素等于前一元素,腾出位置
}
i--;
list[i] = item;
listdisplay();
return ok;
}
int Seqlist::listdel(int i)
{
if (i > size + 1 || i < 1)//i是第i个,而数组从0开始
{
cout << "error" << endl;
return error;
}
i--;
size--;
for (int j = i; j < size; j++)
{
list[j] = list[j + 1];//前一元素等于后一元素
}
listdisplay();
return ok;
}
int Seqlist::listget(int i)
{
if (i > size || i < 1)//i是第i个,而数组从0开始
{
cout << "error";
return error;
}
cout << list[i - 1];
return ok;
}
void Seqlist::listdisplay()
{
cout << size << " ";
for (int i = 0; i < size; i++)
{
cout << list[i] << " ";
}
cout << endl;
}
int main()
{
int n;
cin >> n;
int* item = new int[n];
for (int i = 0; i < n; i++)
{
cin >> item[i];
}
Seqlist seq(item, n);
seq.listdisplay();
int t, data;
for (int i = 0; i < 2; i++)
{
cin >> t >> data;
seq.listinsert(t, data);
}
for (int i = 0; i < 2; i++)
{
cin >> t;
seq.listdel(t);
}
for (int i = 0; i < 2; i++)
{
cin >> t;
seq.listget(t);
if (i != 1)
cout << endl;
}
}