思维导图
作业:
使用C++手动封装一个顺序表,包含成员数组一个,成员变量N个
代码:
#include <iostream>using namespace std;using datatype = int;
#define MAX 30struct SeqList
{private: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 length();//任意位置插入函数bool insert_pos(int pos,datatype e);//任意位置删除函数bool deiete_pos(int pos);//访问容器中任意一个元素 atdatatype &at(int index);//查看数组void show();};//判空函数
bool SeqList::empty()
{if(len == 0){return 1;}else{return 0;}
}//判满函数
bool SeqList::full()
{if(len == size){return 1;}else{return 0;}
}//添加数据函数
bool SeqList::add(datatype e)
{if(full()){cout<<"添加失败"<<endl;return 0;}data[len] = e;len++;return 1;
}//求当前数据表的实际长度
int SeqList::length()
{return len;
}//任意位置插入函数
bool SeqList::insert_pos(int pos,datatype e)
{if(full() || pos<0 || pos>len){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::deiete_pos(int pos)
{if(empty() || pos<0 || pos>len){cout<<"插入失败"<<endl;return 0;}for(int i=pos+1;i<len;i++){data[i-1] = data[i];//将数据后移}len--;cout<<"删除成功"<<endl;return 1;
}//访问容器中任意一个元素 at
datatype &SeqList::at(int index)
{return data[index];}//查看顺序表
void SeqList::show()
{cout<<"当前顺序表为:";for(int i=0;i<len;i++){cout<<data[i]<<" ";}cout<<endl;
}int main()
{SeqList s1;s1.init(MAX);//添加数据s1.add(1);s1.add(2);s1.add(3);s1.add(4);s1.add(5);s1.show();cout<<"顺序表长度为:"<<s1.length()<<endl;//插入数据s1.insert_pos(1,1);s1.show();//删除数据s1.deiete_pos(1);s1.show();//访问数据cout<<"at="<<s1.at(2)<<endl;return 0;
}