作业:
使用C++手动封装一个顺序表,包含成员指针变量,成员变量N个
cpp#ifndef SEQLIST_H #define SEQLIST_H #include <iostream> using namespace std; using datatype = int; class Seqlist { private: datatype * data; int size = 0; int len = 0; public: //无参构造 Seqlist(); //有参构造 Seqlist(int s); //要实现的函数 //判空函数 bool empty(); //判满函数 bool full(); //添加数据函数 bool add(datatype e); //求当前顺序表的实际长度 int length(); //求当前顺序表的容量 int si(); //任意位置插入函数 bool insert_pos(int pos,datatype e); //任意位置删除函数 bool delete_pos(int pos); //访问容器中任意一个元素 at datatype & at(int index); //君子函数:二倍扩容 void expend(); //释放顺序表 void seqfree(); }; #endif // SEQLIST_H
cpp#include "seqlist.h" //无参构造 Seqlist::Seqlist():data(new datatype[10]),size(10),len(0) { cout<<"创建了一个大小为10的顺序表\n"; } //有参构造 Seqlist::Seqlist(int s):data(new datatype[s]),size(s),len(0) { cout<<"创建了一个大小为"<<s<<"的顺序表\n"; } //要实现的函数 //判空函数 bool Seqlist::empty() { if(len == 0) { return 1; } return 0; } //判满函数 bool Seqlist::full() { if(len == size) { return 1; } return 0; } //添加数据函数 bool Seqlist::add(datatype e) { if(full()) { cout<<"数据添加失败\n"; return 0; } data[len] = e; len++; cout<<"数据添加成功\n"; return 1; } //求当前顺序表的实际长度 int Seqlist::length() { return len; } //求当前顺序表的容量 int Seqlist::si() { return size; } //任意位置插入函数 bool Seqlist::insert_pos(int pos,datatype e) { if(full() || pos<0 || pos>size) { cout<<"数据插入失败\n"; return 0; } for(int i=len;i>pos;i--) { data[i] = data[i-1]; } data[pos] = e; len++; cout<<"数据插入成功\n"; return 1; } //任意位置删除函数 bool Seqlist::delete_pos(int pos) { if(empty() || pos<0 || pos>size) { cout<<"数据删除失败\n"; return 0; } for(int i=pos;i<len;i++) { data[i] = data[i+1]; } len--; cout<<"数据删除成功\n"; return 1; } //访问容器中任意一个元素 at datatype & Seqlist::at(int index) { if(empty() || index<0 || index>size) { cout<<"数据访问失败\n"; return data[0]; } cout<<data[index]; return data[index]; } //君子函数:二倍扩容 void Seqlist::expend() { if(empty()) { cout<<"顺序表扩容失败\n"; return; } datatype * newdata = new datatype[size*2]; for(int i=0;i<len;i++) { newdata[i] = data[i]; } size *= 2; delete []data; data = newdata; cout<<"顺序表二倍扩容成功\n"; } //释放顺序表 void Seqlist::seqfree() { delete []data; data = NULL; cout<<"顺序表释放成功\n"; }
cpp#include "seqlist.h" int main() { Seqlist stu(50); stu.add(89); stu.add(98); stu.add(94); stu.add(73); stu.insert_pos(2,78); stu.delete_pos(1); stu.insert_pos(0,66); cout<<"当前顺序表长度为"<<stu.length()<<endl; cout<<"当前顺序表值分别为:\n"; for(int i=0;i<stu.length();i++) { stu.at(i); cout<<'\t'; } cout<<endl; cout<<"当前顺序表容量为"<<stu.si()<<endl; stu.expend(); cout<<"当前顺序表容量为"<<stu.si()<<endl; cout<<"当前顺序表值分别为:\n"; for(int i=0;i<stu.length();i++) { stu.at(i); cout<<'\t'; } cout<<endl; stu.seqfree(); return 0; }
思维导图:
第二章:面向对象之封装(一)
水水阿水水2025-01-10 11:24
相关推荐
pzx_0012 分钟前
【集成学习】Boosting算法详解网硕互联的小客服4 分钟前
云服务器加了安全组端口还是无法访问倔强的石头10614 分钟前
【C++经典例题】求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句九离十16 分钟前
C语言教程——指针进阶(1)Channing Lewis17 分钟前
经典编程题:服务器广播DevOpsDojo20 分钟前
Julia语言的软件工程编程|诗人26 分钟前
Kotlin语言的数据结构Ritsu栗子36 分钟前
代码随想录算法训练营day27小冯的编程学习之路36 分钟前
【LeetCode】:稀疏相似度【困难】羊小猪~~44 分钟前
C/C++语言基础--C++STL库算法记录(质变算法、非质变算法、查找、排序、排列组合、关系算法、集合算法、堆算法等)