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

C++day2

一、思维导图

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

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <csignal>using namespace std;
using datatype = int;
#define MAX 30struct Seqlist
{
private:// datatype data[MAX] = {0};                //顺序表的数组datatype *data;                  //顺序表的数组int size = 0;                    //数组的大小int len = 0;                     //顺序表实际长度public://初始化函数void init(int n);//判空函数bool empty();//判满函数bool full();//添加数据函数bool add(datatype element);//求当前顺序表的实际长度int seq_length();//任意位置插入函数bool insert_pos(int pos, datatype element);//任意位置函数函数bool delete_pos(int pos);//访问容器中任意一个元素 atdatatype &at(int index);//遍历展示顺序表bool list_show();//二倍扩容void expend();//销毁void destroy();};
//结构体函数定义
void Seqlist::init(int n)
{size = n;                       //当前数组的最大容量data = new datatype[size];      //在堆区申请一个顺序表容器
}bool Seqlist::empty()
{return len==0?1:0;
}bool Seqlist::full()
{return len==size?1:0;
}bool Seqlist::add(datatype element)
{//判满bool res = full();if(res == 1){expend();}data[len] = element;len++;cout<<"size ="<<size<<endl;return 1;
}int Seqlist::seq_length()
{return len;
}bool Seqlist::insert_pos(int pos, datatype element)
{//判满bool res = full();if(res == 1){expend();}//判断pos合法性if(pos<0 || pos>len){cout<<"插入位置错误"<<endl;return 0;}//插入位置所有元素后移for(int i=len-1;i>len-pos;i--){data[i+1] = data[i];}// 插入新元素data[pos] = element;// 更新长度len++;return 1;
}datatype& Seqlist::at(int index)
{//判断位置合法if(index<0 || index>=len){cout<<"访问位置错误,返回默认位置"<<endl;return data[0];}return data[index];
}bool Seqlist::list_show()
{//判断表空if(len == 0){cout<<"empty"<<endl;return 0;}for(int i=0;i<len;i++){cout<<data[i]<<"\t";}cout<<endl;return 1;
}
void Seqlist::expend()
{//申请二倍空间datatype* temp =new datatype[size*2];//将原顺序表拷贝到新顺序表memcpy(temp,data,size* sizeof(datatype));delete[] data;                  //销毁原顺序表data = temp;                    //data重新指向新顺序表size *= 2;
}void Seqlist::destroy()
{delete[] data;size = 0;len = 0;data = NULL;
}int main()
{cout<<"***********顺序表***********"<<endl;cout<<"         1、创建顺序表         "<<endl;cout<<"         2、初始化顺序表       "<<endl;cout<<"         3、任意位置插入       "<<endl;cout<<"         4、打印顺序表         "<<endl;cout<<"         5、打印任意位置       "<<endl;cout<<"         6、销毁顺序表         "<<endl;//实例化一个顺序表Seqlist list;while(1){//system("cls");         //清屏int menu = 0;cout<<"请输入操作选项:";cin>>menu;switch(menu){case 1:{cout<<"创建顺序表"<<endl;int size = 0;cout<<"请输入需要创建顺序表的大小"<<endl;cin>>size;list.init(size);cout<<"创建成功"<<endl;}break;case 2:{cout<<"初始化顺序表"<<endl;int n = 0;cout<<"请输入您要插入数据个数"<<endl;cin>>n;datatype element = 0;for(int i=0;i<n;i++){cout<<"请输入第"<<i+1<<"个数据"<<endl;cin>>element;list.add(element);}cout<<"初始化成功"<<endl;}break;case 3:{cout<<"任意位置插入"<<endl;int pos = 0;datatype element;cout<<"请输入您要插入的位置"<<endl;cin>>pos;cout<<"请输入您要插入的元素"<<endl;cin>>element;bool res = list.insert_pos(pos,element);if(res == 1){cout<<"任意位置插入成功"<<endl;}}break;case 4:{cout<<"打印顺序表"<<endl;//输出list.list_show();}break;case 5:{cout<<"打印任意位置"<<endl;int pos = 0;cout<<"请输入您要查看的位置:";cin>>pos;cout<<list.at(pos-1)<<endl;}break;case 6:{cout<<"销毁顺序表"<<endl;list.destroy();cout<<"销毁成功"<<endl;}break;default:cout<<"选项输入错误"<<endl;}}return 0;
}


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

相关文章:

  • Lottie动画
  • 【Material-UI】深入了解Radio Group中的useRadioGroup Hook
  • Markdown 美化 Github 个人主页
  • 使用Python 访问Neo4J 数据库
  • mp总结 mybatisPlus
  • 07 - procfs
  • 【线程池】
  • 【计算机网络】计算机网络的性能指标
  • 算法笔试-编程练习-H-02-24
  • 愿遗忘与你同在:使用 Noisy Labels 学习的替代重播
  • 基于SSM+小程序的旅游社交登录管理系统(旅游4)(源码+sql脚本+视频导入教程+文档)
  • 【开端】 进行页面升级或维护时不影响用户体验NGINX配置
  • 常量指针与指针常量
  • 【深入解析】最优控制中的Bellman方程——从决策到最优路径的探索
  • Qt_两种创建组件的方式-通过图形化-通过代码
  • [HZNUCTF 2023 preliminary]flask
  • Linux -- git
  • C++ | Leetcode C++题解之第377题组合总和IV
  • Web3常见概念
  • ip命令简解