当前位置: 首页 > news >正文

2024.8.28 作业

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

#include <iostream>using namespace std;//类型重命名
using datatype = int;     //typedef int datatype;struct  SeqList
{private:datatype *data;                //顺序表的数组int size = 0;                      //数组的大小int len = 0;                     //顺序表实际长度public://初始化函数void init(int s);//判空函数bool empty();//判满函数bool full();//添加数据函数bool add(datatype e);//求当前顺序表的实际长度int length();//任意位置插入函数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 len==0;
}//判满函数
bool SeqList::full()
{return len==size;
}//添加数据函数
bool SeqList::add(datatype e)
{if(full()){//expend();}data[len] = e;len++;return 0;
}//求当前顺序表的实际长度
int SeqList::length()
{return len;
}//任意位置插入函数
bool SeqList::insert_pos(int pos, datatype e)
{if(full()){//expend();}pos=pos-1;for(int i=len;i>=pos+1;i--){data[i] = data[i-1];}data[pos]=e;len++;return 0;
}//任意位置删除函数
bool SeqList::delete_pos(int pos)
{if(empty()){cout<<"删除失败"<<endl;return false;}pos = pos-1;for(int i=pos;i<len-1;i++){data[i] = data[i+1];}len--;return true;
}//访问容器中任意一个元素 at
datatype &SeqList::at(int index)
{datatype &val = data[index-1];return val;
}//君子函数:二倍扩容
void SeqList::expend()
{datatype *temp = new datatype(size*2);memcpy(temp,data,size);delete []data;data = temp;temp = nullptr;size=size*2;
}int main()
{SeqList seq;seq.init(10);for(int i=1;i<50;i++){seq.add(i);}//seq.insert_pos(1,0);//seq.delete_pos(5);for(int i=1;i<=seq.length();i++){cout<<seq.at(i)<<" ";}cout<<endl;return 0;
}

思维导图


http://www.mrgr.cn/news/13631.html

相关文章:

  • Spring:浅谈对Spring的认识
  • 【微信小程序】全局数据共享 - MobX
  • 【学习笔记】 陈强-机器学习-Python-Ch13 提升法(1)
  • 云计算环境下的数据治理
  • 光性能 -- 光功率平坦度
  • 【计算机网络】mini HTTP服务器框架与代码
  • XR虚拟拍摄短剧 | 探索虚拟制作在短剧领域的应用与发展
  • 今日算法:蓝桥杯基础题之“门牌制作”
  • Python 正则表达式
  • 掌握PyTorch模型的版本控制:高效管理与迭代
  • 乐凡三防:工业界的硬核产品——重新定义三防平板的极限
  • Nginx 负载均衡深入指南:`proxy_pass` 指令的高效使用
  • 怎样写好提示词(Prompt) 二
  • Ruby Web服务开发:构建高效RESTful API的秘诀
  • IO多路复用
  • CSS动画的使用
  • 遗传算法优化支持向量机代码(输出world报告)
  • 力扣380.O(1)时间的插入删除和获取随机元素
  • 【数据结构】优先级队列 — 堆
  • Spark MLlib模型训练—分类算法 Decision tree classifier