#include <iostream>
using namespace std;
//类型重命名
using datatype = int;
struct Seqlist
{
private:
//datatype data[MAX]={0}; //顺序表的数组
datatype *data; //顺序表的数组
int size =0; //数组的大小
int len=0; //数据表的实际长度
public:
//初始化函数
void init(int s)
{
size =s; //当前数组的最大容量
data = new datatype(size); //在堆区申请一个顺序表容器
}
//要实现的函数
//判空函数
bool empty();
//判满函数
bool full();
//添加数据函数
bool add(datatype e);
//求当前顺序表的实际长度函数
int lenth();
//任意位置插入函数
bool add_pos(int pos,datatype e);
//任意位置删除函数
bool delete_pos(int pos);
//访问容器中的任何一个元素
datatype at(int index);
//
};
//判空
bool Seqlist::empty()
{
if(len==0)
{
return 1;
}
return 0;
}
//判满
bool Seqlist::full()
{
if(len ==size)
{
return 1;
}
return 0;
}
//求当前顺序表的实际长度函数
int Seqlist::lenth()
{
return len;
}
//添加数据函数
bool Seqlist ::add(datatype e)
{
if(full()==1)
{
cout <<"添加失败"<<endl;
}
data[len++]=e;
return 1;
}
//任意位置插入函数
bool Seqlist::add_pos(int pos,datatype e)
{
if(full()==1||pos>len||pos<0)
{
cout <<"添加失败"<<endl;
return 0;
}
for(int i=len -1;i>=pos;i--)
{
data[i+1]=data[i];
}
data[pos]=e;
len++;
cout<<"添加成功"<<endl;
return 1;
}
//任意位置删除函数
bool Seqlist::delete_pos(int pos)
{
if(empty()==1||pos>len||pos<0)
{
cout << "删除失败" <<endl;
return 0;
}
for(int i=pos+1;i<len;i++)
{
data[i]=data[i-1];
}
len--;
cout<<"删除成功"<<endl;
return 1;
}
//访问容器中的任何一个元素
datatype Seqlist::at(int index)
{
if(index<0||index>=len)
{
cout<<"访问失败"<<endl;
return -1;
}
return data[index];
}
int main()
{
Seqlist array;
array.add(11);
array.add(22);
array.add(33);
array.add(44);
array.add(55);
array.add(66);
cout<<"顺序表的长度为 "<<array.lenth()<<endl;
array.add_pos(3,77);
array.delete_pos(2);
return 0;
}
思维导图