作业:
使用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
相关推荐
zh_xuan3 分钟前
kotlin对集合数据的操作Hcoco_me5 分钟前
大模型面试题76:强化学习中on-policy和off-policy的区别是什么?企业对冲系统官9 分钟前
大宗商品风险对冲系统统计分析功能的技术实现ValhallaCoder9 分钟前
Day48-单调栈a程序小傲13 分钟前
京东Java面试被问:多活数据中心的流量调度和数据同步Sylvia-girl18 分钟前
数组题目之移除元素88号技师19 分钟前
2026年1月一区SCI-最优或最劣优化器Farthest better or nearest worse optimizer-附Matlab免费代码feifeigo12320 分钟前
基于嵌套阵列的DOA估计Matlab仿真例程三金1213823 分钟前
Java定时任务Schedule详解及Cron表达式实践foundbug99928 分钟前
小波分析与粒子群算法结合用于电网潮流优化
