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

09.20 C++对C的扩充以及C++中的封装、SeqList

在这里插入图片描述
在这里插入图片描述

SeqList.h

#ifndef SEQLIST_H
#define SEQLIST_H#include <iostream>
#include<memory.h>
#include<stdlib.h>
#include<string.h>using namespace std;//typedef int datatype;        //类型重命名
using datatype = int;//封装一个顺序表
class SeqList
{
private:datatype *ptr;        //指向堆区空间的起始地址int size;             //总长度int len = 0;          //当前顺序表实际长度public:void init(int n);//判空bool empty();//判满bool full();//尾插void push_back(datatype e);//任意位置插入void insert(int index);//任意位置删除void erase(int index);//定义展示函数void show();//求长度int get_size();//排序void sort(bool flag);//任意位置数据datatype& at(int index);//尾删void pop_back();};#endif // SEQLIST_H

SeqList.cpp

#include "SeqList.h"void SeqList::init(int n)
{//在堆区申请出一个长度为n的空间,将其实地址赋值给ptrthis->ptr = new datatype[n];//给len进行初始化this->len = 0;this->size = n;
}//判空
bool SeqList::empty()
{return this->len == 0;
}//判满
bool SeqList::full()
{return this->len == this->size;
}//尾插
void SeqList::push_back(datatype e)
{//判断是否满了if(this->full()){return ;}this->ptr[len++] = e;}//任意位置插入
void SeqList::insert(int index){//判满if(this->full()){cout<<"列表满"<<endl;return;}if(index>size){cout<<"超出容器大小"<<endl;return;}if(index<0){cout<<"位置不合法"<<endl;return;}int in;cout<<"请输入要插入的内容:"<<endl;cin>>in;for(int i=len;i>=index;i--){ptr[i] = ptr[i-1];cout<<ptr[i]<<endl;}ptr[index-1]=in;len++;
}//任意位置删除
void SeqList::erase(int index){if(index>size){cout<<"超出容器大小"<<endl;return;}if(index<0){cout<<"位置不合法"<<endl;return;}if(empty()){cout<<"表为空"<<endl;return;}for(int i=index-1;i<len-1;i++){ptr[i]=ptr[i+1];}len--;}//定义展示函数
void SeqList::show()
{//判空if(empty()){cout<<"表为空"<<endl;return;}cout<<"当前顺序表中的元素分别是:";for(int i=0; i<this->len; i++){cout<<this->ptr[i]<<" ";}cout<<endl;
}
//求总长
int SeqList::get_size(){return this->len;
}//获取任意位置的元素
datatype& SeqList::at(int index){return ptr[index-1];
}// 排序函数
void SeqList::sort(bool flag){for (int i=0; i<len-1;i++) {for (int j=0; j<len-1-i;j++) {if ((flag&&ptr[j]>ptr[j+1])||(!flag&&ptr[j]<ptr[j+1])) {// 交换元素datatype temp=ptr[j];ptr[j]=ptr[j+1];ptr[j+1]=temp;}}}
}//尾删
void SeqList::pop_back(){if(empty()){cout<<"列表为空"<<endl;return;}len--;
}

mian.cpp

#include "SeqList.h"using namespace std;int main()
{SeqList sl;           //实例化一个顺序表对象sl.init(5);            //申请空间sl.push_back(1111);sl.push_back(2222);sl.push_back(3333);//sl.insert(1);//sl.erase(2);//cout<<sl.at(2)<<endl;sl.sort(0);sl.show();return 0;
}
http://www.lryc.cn/news/442761.html

相关文章:

  • Git提交类型
  • C++速通LeetCode简单第18题-杨辉三角(全网唯一递归法)
  • Redis作为单线程模型,为什么效率高、速度快呢?
  • 人工智能——猴子摘香蕉问题
  • 对ViT 中Patch Embedding理解
  • Redis基本命令详解
  • Java之线程篇四
  • 计算机毕业设计之:基于微信小程序的校园流浪猫收养系统
  • SpringBoot:关于Redis的配置失效(版本问题)
  • halcon 快速定义字典
  • Sublime text3怎么关闭提示更新
  • 生成式语言模型技术栈
  • 进程分析工具Process Explorer使用
  • vue 中如何实现鼠标拖动出发滚动条的跟随移动?
  • 【Java EE】文件IO
  • 使用 React、Material-UI、Spring、MySQL、MyBatis 以及高德 API 模拟实时位置信息
  • UniApp一句话经验: px -> rpx动态转换和动态元素区域的获取
  • Python基于flask框架的智能停车场车位系统 数据可视化分析系统fyfc81
  • 海外服务器哪个速度最快且性能稳定
  • C/C++通过CLion2024进行Linux远程开发保姆级教学
  • 工程师 - 如何安装Windows 终端
  • UniApp 从Vue2升级为Vue3需要注意哪些方面
  • 前端面试CSS常见题目
  • 408算法题leetcode--第10天
  • 13年计算机考研408-数据结构
  • 跨平台开发新视角:利用Android WebView实现Web内容的原生体验
  • Stable Diffusion 使用详解(11)--- 场景ICON制作
  • 【Linux系统编程】第二十弹---进程优先级 命令行参数 环境变量
  • 无人机之4G模块的主要功能和优势
  • 深度学习-03 Pytorch