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

8月28c++

 c++手动封装顺序表

#include <iostream>using namespace std;
using datatype =int;//类型重命名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);//任意位置删除函数datatype &at(int index);//访问任意一个元素函数void expand();//二倍扩容函数
};
//初始化函数
void SeqList::init(int s)
{size=s;data=new datatype(size);
}
//判空
bool SeqList::empty()
{return len==0;//实际长度是否为0
}bool SeqList::full()
{return len==size;//实际长度是否为最大大小
}
//添加
bool SeqList::add(datatype e)
{   //判满if(full()){return 0;}data[len]=e;//添加len++;//长度加1return 1;
}
//实际长度
int SeqList::length()
{return len;//返回实际长度
}
//任意位置插入
bool SeqList::insert_pos(int pos, datatype e)
{//判满和插入位置if(full()||pos<1||pos>len+1){return 0;}int i;//后一个等于前一个for(i=len;i>pos-1;i--){data[i]=data[i-1];}//按位置插入data[i]=e;len++;//实际长度加一return 1;
}
//任意位置删除
bool SeqList::delete_pos(int pos)
{//判空和删除位置if(empty()||pos<1||pos>len){return 0;}//前一个等于后一个for(int i=pos;i<len;i++){data[i-2]=data[i-1];}len--;//实际长度减一data[len]=0;//最后一个数据清零return 1;
}datatype& SeqList::at(int index)
{return data[index];//返回任意位置数据
}void SeqList::expand()
{size=size*2;//二倍最大长度datatype *temp=new datatype[size];//堆区创建数组空间//搬运原数组for(int i=0;i<len;i++){temp[i]=data[i];}delete[]data;//销毁原堆区空间data=temp;//指针重新指向该堆区空间
}


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

相关文章:

  • 【学术会议征稿】第三届公共卫生与数据科学国际学术会议(ICPHDS 2024)
  • STM32F103与ESP8266 WIFI模块的USART中断调试
  • 大模型本地化部署1-Ollama安装(Windows)
  • Docker修改容器地址
  • Unity(2022.3.41LTS) - 图形,天空盒
  • 【大模型】llama系列模型基础
  • 微服务简介
  • docker笔记
  • 【区块链 + 司法存证】数据存证区块链服务开放平台 | FISCO BCOS应用案例
  • MAC打开IDA Pro意外退出
  • 复杂度——链表的回文结构
  • springboot配置两个MongoDB
  • go 开发小技巧
  • 论文速递 | Operations Research 7月文章合集
  • 开发新系统时,数据库字符集怎么选择对中文的支持最好?
  • 浏览器多开,让WhatsApp多账号管理更高效
  • kotlin协程之 协程概念的具像化
  • 使用推测解码提高 LLM 推理速度
  • 47-java节点流和处理流
  • 利用Python对Excel数据进行条件筛选与排序