作业:使用C++手动封装一个顺序表,包含成员数组一个,成员变量N个
#include <iostream>using namespace std;using datatype=int;
#define MAX 20struct SeqList
{ private: //私有datatype *data;int size=0; //数组的大小int len=0; //顺序表实际长度public://要实现的函数//初始化void init(int s);//1.判空bool empty();//2.判满bool full();//3.求当前顺序表的实际长度int length();//4.添加数据函数bool add(datatype e);//5.任意位置插入函数bool insert_pos(int pos,datatype e);//6.任意位置删除函数bool delete_pos(int pos);//7.访问容易中任意一个元素atdatatype &at(int index);//遍历数组void show();//销毁void distroy();};//初始化
void SeqList::init(int s)
{size = s; //此时最大容量data = new datatype(size); //申请空间
}//1判空
bool SeqList::empty()
{return len==0;
}//2判满
bool SeqList::full()
{return len==size;
}//求当前顺序表的实际长度
int SeqList::length()
{cout<<"当前实际长度:"<<len<<endl;return len;
}//添加数据函数
bool SeqList::add(datatype e)
{//判断是否满if(full()==1){cout<<"已满,添加失败!"<<endl;return 0;}data[len]=e;len++;cout<<"成功添加!"<<endl;
}//任意位置插入函数
bool SeqList::insert_pos(int pos,datatype e)
{//判断是否满if(full()==1){cout<<"已满,添加失败!"<<endl;return 0;}for(int i=len-1;i>=pos;i--){data[i+1]=data[i];}data[pos]=e;len++;cout<<"成功添加!"<<endl;
}//6.任意位置删除函数
bool SeqList::delete_pos(int pos)
{//判断是否为空if(empty()){cout<<"为空表,删除失败!"<<endl;return 0;}for(int i=pos-1;i<len;i++){data[i]=data[i+1];}len--;cout<<"成功删除!"<<endl;
}//7访问容器中任意一个元素at
datatype &SeqList::at(int index)
{cout<<data[index]<<endl;return data[index];
}//遍历
void SeqList::show()
{cout<<"数据:";for(int i=0;i<len;i++){cout<<data[i]<<" ";}cout<<endl;
}
//任意位置函数lete_pos(int pos);//释放空间
void SeqList::distroy()
{delete data;
}int main()
{//定义SeqList p1;//调用初始化p1.init(20);//调用添加p1.add(4);p1.add(6);p1.add(8);p1.show();//调用任意位置插入p1.insert_pos(2,9);p1.show();//调用按位置删除p1.delete_pos(2);p1.show();//调用访问元素p1.at(2);//查看当前长度p1.length();//释放p1.distroy();return 0;
}
思维导图: