1.使用C++手动封装一个顺序表,包括成员数组1个,成员变量n个
代码:
cpp
#include <iostream>
using namespace std;
//类型重命名
using datatype = int;
#define MAX 30
struct seqList
{
private: //私有权限
datatype *data; //相当于 datatype data[MAX]={0}; 顺序表的数组
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 delete_pos(int pos);
//访问容器中任意一个元素at
datatype at(int index);
//遍历顺序表
bool list_show();
};
//判空函数
bool seqList::empty()
{
return len==0;
}
//判满函数
bool seqList::full()
{
return len==size;
}
//添加数据函数
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;
}
//将插入前,pos处及其后面的元素后移
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() || pos<0 || pos>=len)
{
cout<<"删除失败"<<endl;
return 0;
}
for(int i=pos;i<len-1;i++)
{
data[i]=data[i+1];
}
//表长变化
len--;
cout<<"删除成功"<<endl;
return 1;
}
//访问容器中任意一个元素at
datatype seqList::at(int index)
{
return data[index];
}
//遍历顺序表
bool seqList::list_show()
{
if(empty())
{
cout<<"遍历失败"<<endl;
return 0;
}
cout<<"顺序表中的数据为:";
for(int i=0;i<len;i++)
{
cout<<data[i]<<" ";
}
cout<<endl;
return 1;
}
/*************主函数******************/
int main()
{
seqList L;
L.init(10);
//添加4个元素
L.add(1);
L.add(2);
L.add(3);
L.add(4);
L.list_show();
//求实际长度
int n=L.length();
cout<<"顺序表的实际长度为:"<<n<<endl;
//插入功能
L.insert_pos(3,10);
L.list_show();
//删除功能
L.delete_pos(0);
L.list_show();
//访问功能
int a=L.at(2);
cout<<"访问data[2](第3位)数据为:"<<a<<endl;
return 0;
}