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

C++ DAY2

作业:完成   //判空函数
         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);
         
         //君子函数:二倍扩容
         void expend();

 

#include <iostream>using namespace std;//类型重命名
using datatype = int;     //typedef int datatype;
#define MAX 30struct  SeqList
{private:// datatype data[MAX] = {0};                //顺序表的数组datatype *data;                //顺序表的数组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);//访问容器中任意一个元素 atdatatype &at(int index);//君子函数:二倍扩容datatype * expand();//遍历函数bool show();//删除顺序表bool destroy();};
bool SeqList ::empty()
{return len==0;               // len 是否等于 0,表示顺序表是否为空
}bool SeqList ::full()
{return len==size;          //当实际元素数量==数组大小时为满
}
//添加数据函数
bool SeqList ::add(datatype e)
{//判断逻辑if(NULL==data){cout<<"添加失败"<<endl;return 0;}else if(full()){data=expand();}//插入逻辑data[len]=e;len++;cout<<"插入成功"<<endl;return 1;
}
//求当前顺序表的实际长度
int SeqList ::length()
{cout<<"顺序表长度为"<<len<<endl;return 0;
}//任意位置插入函数
bool SeqList ::insert_pos(int pos, datatype e)
{//判断逻辑if(NULL==data||pos<=0||pos>len){cout<<"插入失败"<<endl;return 0;}else if(full()){data=expand();}//移动逻辑if(pos==len){data[pos]=e;}else{for(int i=len-1;i>=pos;i--){data[i+1]=data[i];}data[pos-1]=e;}//插入逻辑len++;cout<<"插入成功"<<endl;return 1;}
//任意位置删除函数
bool SeqList ::delete_pos(int pos)
{//判断逻辑if(NULL==data||empty()||pos<=0||pos>len){cout<<"删除失败"<<endl;return 0;}//删除逻辑for(int i=pos;i<len;i++){data[i-1]=data[i];}len--;cout<<"删除成功"<<endl;return 1;
}
//访问容器中任意一个元素 at
datatype &SeqList ::at(int index)
{if (index >= 0 && index < len){return data[index]; // 返回索引为 index 的元素的引用}else{// 处理索引越界的情况throw std::out_of_range("Index out of bounds");}}//君子函数:二倍扩容
datatype* SeqList ::expand()
{datatype *temp;size*=2;temp=new datatype[size];copy(data, data + size / 2, temp);delete [] data;return temp;
}
//遍历函数
bool SeqList ::show()
{//判断逻辑if(NULL==data||empty()){cout<<"遍历失败"<<endl;return 0;}cout<<"容器里的元素有:"<<'\t';for(int i=0;i<len;i++){cout<<data[i]<<'\t';}cout<<endl;return 1;
}
bool SeqList:: destroy()
{delete[]data;return 1;
}int main()
{struct SeqList mylist;                 //创建顺序表int size=5;                            //设置容量mylist.init(size);                     //初始化mylist.add(6);mylist.add(4);mylist.add(3);mylist.add(7);mylist.add(5);                          //至此已满mylist.show();mylist.add(2);mylist.add(1);mylist.show();mylist.insert_pos(0,10);                //位置输入0 插入失败mylist.insert_pos(1,10);                //位置输入1 头插mylist.show();mylist.length();                        //此时长度len为8mylist.insert_pos(9,10);mylist.insert_pos(8,10);mylist.show();mylist.delete_pos(4);mylist.show();mylist.length(); cout<<"访问的值为"<<mylist.at(2)<<endl;   //访问数组第二个元素mylist.destroy();                        //删除顺序表return 0;
}


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

相关文章:

  • XSS-labs靶场通关攻略(16-20)
  • 力扣229题详解:求众数 II 的多种解法与模拟面试问答
  • day-42 分割字符频率相等的最少子字符串
  • 怎么生成一个springboot的项目
  • Vue:组件化开发
  • 11 索引
  • 290. 单词规律【 力扣(LeetCode) 】
  • RAG与LLM原理及实践(14)---- Python + MinIO + Kafka进阶
  • 在英伟达,你既能成为百万富翁,也能被“折磨”
  • bash 脚本的执行方式
  • MATLAB 低版本Matlab-读取LAS格式点云文件并可视化(78)
  • 功能测试常用的测试用例大全
  • Java设计模式之原型模式详细讲解和案例示范
  • 开发日志:表单解析 LeipiFormDesign
  • 【openpyxl-驯化】一文搞懂python是如何将文本、图片写入到execl中的技巧
  • 嵌入式学习day34
  • 【奇某信-注册/登录安全分析报告】
  • 数据实体类主键使用UUID生成策略
  • 每日刷力扣SQL题(七)
  • iPhone不停重启怎么办?全面解析与解决方案