题目描述
实现顺序表的用C++语言和类实现顺序表
属性包括:数组、实际长度、最大长度(设定为1000)
操作包括:创建、插入、删除、查找
类定义参考:
输入
第1行先输入n表示有n个数据,即n是实际长度;接着输入n个数据
第2行输入要插入的位置和新数据
第3行输入要插入的位置和新数据
第4行输入要删除的位置
第5行输入要删除的位置
第6行输入要查找的位置
第7行输入要查找的位置
输出
数据之间用空格隔开
第1行输出创建后的顺序表内容,包括顺序表实际长度和数据
每成功执行一次操作(插入或删除),输出执行后的顺序表内容
每成功执行一次查找,输出查找到的数据
如果执行操作失败(包括插入、删除、查找等失败),输出字符串error,不必输出顺序表内容
输入样例1
6 11 22 33 44 55 66
3 777
1 888
1
9
0
5
输出样例1
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
提示
第i个位置是逻辑意义的位置,从1开始,在实际编程用数组,从0开始,对应数组i-1位置
代码如下:
#include<iostream>
using namespace std;
#define ok 1
#define error -1
//顺序表类
class SeqList{
private:
int *list;
int maxsize;
int size;
public:
SeqList();//初始化
~SeqList();//数组释放
int getSize();//获得元素个数
int Insert(int pos,int elem);//插入
int Delete(int pos);//删除
int getElem(int pos);//取数
int Display();//展示
};
//类函数实现
SeqList::SeqList()
{
cin >> size;
maxsize = 1000;
list = new int[maxsize];
for (int i = 0;i<size;i++)
{
cin >> list[i];
}
}
SeqList::~SeqList()
{
delete[] list;
}
int SeqList::getSize()
{
return size;
}
int SeqList::Insert(int pos,int elem)
{
if(pos<1 ||pos>size || size == maxsize)
{
cout << "error" << endl;
return error;
}
for (int j = size; j>=pos ;j--)
{
list[j] = list[j - 1];
}
list[pos - 1] = elem;
size++;
Display();
return ok;
}
int SeqList::Delete(int pos)
{
if(size == 0 || pos < 1 || pos >size)
{
cout << "error" << endl;
return error;
}
for (int j = pos-1;j < size;j++)
{
list[j] = list[j + 1];
}
size--;
Display();
return ok;
}
int SeqList::getElem(int pos)
{
if(size == 0 || pos < 1 || pos >size)
{
cout << "error" << endl;
return error;
}
return list[pos-1];
}
int SeqList::Display()
{
if(size == 0)
{
cout << "error" << endl;
return error;
}
cout << size << " ";
for (int i = 0;i<size;i++)
{
cout << list[i] << " ";
}
cout << endl;
return ok;
}
int main()
{
int pos1, pos2, pos3, pos4, pos5,pos6, elem1, elem2;
SeqList myseqlist;
cin >> pos1 >> elem1;
cin >> pos2 >> elem2;
cin >> pos3;
cin >> pos4;
cin >> pos5;
cin >> pos6;
myseqlist.Display();
myseqlist.Insert(pos1,elem1);
myseqlist.Insert(pos2,elem2);
myseqlist.Delete(pos3);
myseqlist.Delete(pos4);
myseqlist.Delete(pos5);
myseqlist.Delete(pos6);
return 0;
}
----------------------------------------水平有限 敬请指正------------------------------------------------