欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 维修 > 作业0828

作业0828

2024/10/25 8:23:16 来源:https://blog.csdn.net/VvvvvvV111h/article/details/141648644  浏览:    关键词:作业0828

 使用C++手动封装一个顺序表,包含成员数组一个,成员变量N个

#include <iostream>
#include <string>using namespace std;using datatype = int;struct Seqlist
{
private:datatype *data = NULL;int size = 0;int len = 0;public://初始化函数void init(int s);//判空函数bool empty();//判满函数bool full();//添加数据函数bool add(datatype e);//求当前顺序表的实际长度int length();//求顺序表的大小int SIZE();//任意位置插入函数bool insert_pos(int pos, datatype e);//任意位置函数函数bool delete_pos(int pos);//访问容器中任意一个元素 atdatatype &at(int index);//二倍扩容void expend();
};//初始化函数
void Seqlist::init(int s)
{size = s;data = new datatype[size];
}//判空函数
bool Seqlist::empty()
{return 0 == len;
}//判满函数
bool Seqlist::full()
{return size == len;
}//添加数据函数
bool Seqlist::add(datatype e)
{if(NULL == data){cout << "添加失败" << endl;return false;}if(full()){expend();}data[len] = e;len++;cout << "添加成功" << endl;return true;
}//求当前顺序表的实际长度
int Seqlist::length()
{return len;
}//求顺序表的大小
int Seqlist::SIZE()
{return size;
}//任意位置插入函数
bool Seqlist::insert_pos(int pos, datatype e)
{if(NULL == data){cout << "插入失败" << endl;return false;}if(full()){expend();}for(int i=len; i>pos; i--){at(i) = at(i-1);}at(pos) = e;len++;cout << "插入成功" << endl;return true;
}//任意位置删除函数
bool Seqlist::delete_pos(int pos)
{if(empty() || NULL == data){cout << "删除失败" << endl;return false;}for(int i=pos; i<len; i++){at(i) = at(i+1);}len--;cout << "删除成功" << endl;return true;
}//访问容器中任意一个元素 at
datatype &Seqlist::at(int index)
{return data[index];
}//二倍扩容
void Seqlist::expend()
{size = size*2;datatype *temp = new datatype[size];memcpy(temp, data, size/2*sizeof(datatype));delete []data;data = temp;
}int main()
{Seqlist L;L.init(10);for(int i=0; i<30; i++){L.add(i);cout << "此时顺序表大小为:" << L.SIZE() << endl;cout << "此时顺序表实际长度为:" << L.length() << endl;}L.insert_pos(1, 666);L.delete_pos(1);for(int i=0; i<L.length(); i++){cout << L.at(i) << " ";}cout << endl;return 0;
}

 思维导图:

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com