9.20作业

手动封装一个顺序表(SeqList),分文件编译实现

有私有成员:
顺序表数组的起始地址 ptr、 顺序表的总长度:size、顺序表的实际长度:len
成员函数:
初始化 init(int n)
判空:empty
判满:full
尾插:push_back
插入:insert(int index)
任意位置删除:erase(int index)
尾删: pop_back
求长度:size()
获取任意位置元素:& at(int inex)
将顺序表进行排序:sort(bool flag) //flag 为真,表示升序,否则是降序

代码展示

SeqList.h
#ifndef SEQLIST_H
#define SEQLIST_H
#include <iostream>
#include<memory.h>
#include<stdlib.h>
#include<string.h>using datatype = int;
using namespace std;//封装一个顺序表
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 show();//插入void insert(int index);//任意位置删除void delete_s(int index);//尾删: pop_backvoid pop_back();//求长度:size()datatype get_len();//获取任意位置元素datatype get_index(int index);//将顺序表进行排序void sort(bool flag);
};
#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::show()
{//判空cout<<"当前顺序表中的元素分别是:";for(int i=0; i<this->len; i++){cout<<this->ptr[i]<<" ";}cout<<endl;
}
//插入
void SeqList::insert(int index){//判断是否满了if(this->full()){cout<<"表已经满了!"<<endl;return ;}//判断位置是否合理if(index>this->len+1 || index<=0 || index>this->size){cout<<"插入位置不合理"<<endl;return;}datatype e;cout<<"请输入插入元素:";cin >>e;for(int i=len-1;i>=index-1;i--){this->ptr[i+1] = this->ptr[i];}this->ptr[index-1] = e;this->len++;
}
//任意位置删除
void SeqList::delete_s(int index){//判断位置是否合理if(index>this->len||index<=0||index>this->size){cout<<"删除位置不合理"<<endl;return;}for(int i=index;i<this->len;i++){this->ptr[i-1] = this->ptr[i];}this->len--;
}
//尾删: pop_back
void SeqList::pop_back(){if(this->len==0){cout<<"顺序表为空!"<<endl;return;}this->len--;
}
//求长度:size()
datatype SeqList::get_len(){return this->len;
}
//获取任意位置元素
datatype SeqList::get_index(int index){//判断位置是否合理if(index>this->len||index<=0||index>=this->size){cout<<"位置不合理";return -1;}return this->ptr[index-1];
}
//将顺序表进行排序:sort(bool flag)flag 为真,表示升序,否则是降序
void SeqList::sort(bool flag){if(flag){//升序for(int i=1;i<this->len;i++){for(int j=0;j<this->len-i;j++){if(this->ptr[j]>this->ptr[j+1]){datatype t = this->ptr[j];this->ptr[j] = this->ptr[j+1];this->ptr[j+1] = t;}}}}else{//降序for(int i=1;i<this->len;i++){for(int j=0;j<this->len-i;j++){if(this->ptr[j]<this->ptr[j+1]){datatype t = this->ptr[j];this->ptr[j] = this->ptr[j+1];this->ptr[j+1] = t;}}}}
}
main.cpp
#include "SeqList.h"int main()
{SeqList sl;            //实例化一个顺序表对象int n;cout<<"请输入顺序表的大小:";cin>>n;sl.init(n);            //申请空间cout<<"请输入插入的数据:(输入#结束)";while(1){string s;cin>>s;if(s=="#"){break;}int e = stoi(s);sl.push_back(e);}sl.show();int add;cout<<"请输入插入数据的位置:";getchar();cin>>add;sl.insert(add);sl.show();cout<<"请输入删除数据的位置:";cin>>add;sl.delete_s(add);sl.show();int c;cout<<"是否尾删(1:YES/2:NO):";cin>>c;if(c==1){sl.pop_back();}sl.show();int l = sl.get_len();cout<<"顺序表当前长度为:"<<l<<endl;int index;cout<<"请输入需要位置:";cin>>index;cout<<index<<"位置数据位:"<<sl.get_index(index)<<endl;cout<<"将顺序表进行排序(1:升序,0:降序):";cin>>c;sl.sort(c);sl.show();return 0;
}

运行结果

在这里插入图片描述

思维导图

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1540420.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

计算机毕业设计 美发管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

Chat2VIS: Generating Data Visualizations via Natural Language

Chat2VIS:通过使用ChatGPT, Codex和GPT-3大型语言模型的自然语言生成数据可视化 梅西大学数学与计算科学学院&#xff0c;新西兰奥克兰 IEEE Access 1 Abstract 数据可视化领域一直致力于设计直接从自然语言文本生成可视化的解决方案。自然语言接口 (NLI) 的研究为这些技术的…

从虚拟到现实:数字孪生与数字样机的进化之路

数字化技术高速发展的当下&#xff0c;计算机辅助技术已成为产品设计研发中不可或缺的一环&#xff0c;数字样机&#xff08;Digital Prototype, DP&#xff09;与数字孪生技术便是产品研发数字化的典型方法。本文将主要介绍数字样机与数字孪生在国内外的发展&#xff0c;并针对…

Java 并发编程 —— AQS 抽象队列同步器

文章目录 什么是 AQS底层数据结构—— CLH 队列入队和出队状态标志位AQS 的代码设计思路AQS 提供的钩子方法参考资料 什么是 AQS AQS 是 JUC 提供的一个用于构建锁和同步容器的基础类&#xff0c;用于减少由于无效争夺导致的资源浪费和性能恶化。JUC 包内的许多类都是基于 AQS…

【JPCS出版】第四届电气工程与计算机技术国际学术会议(ICEECT 2024,9月27-29)

会议信息 会议官网&#xff1a;www.iceect.com 2024 4th International Conference on Electrical Engineering and Computer Technologywww.iceect.com 时间地点&#xff1a;2024年9月27日-29日 | 线上&#xff08;ZOOM&#xff09; 最终截稿时间&#xff1a;9月23日 主办…

【C++篇】C++类与对象深度解析(六):全面剖析拷贝省略、RVO、NRVO优化策略

文章目录 C类与对象前言读者须知RVO 与 NRVO 的启用条件如何确认优化是否启用&#xff1f; 1. 按值传递与拷贝省略1.1 按值传递的概念1.2 示例代码1.3 按值传递的性能影响1.3.1 完全不优化 1.4 不同编译器下的优化表现1.4.1 Visual Studio 2019普通优化1.4.2 Visual Studio 202…

2024.9.20营养小题【1】

这道题并不难&#xff0c;但是通过这道题&#xff0c;对知识有了一些更深一点的理解吧。 我们知道&#xff0c;数组名代表的其实是数组中首元素的指针&#xff1b;字符串其实是一个数组&#xff1b;所以字符串名是指向字符串中首元素地址的指针&#xff1b;strlen(字符串名&am…

Spring Boot利用dag加速Spring beans初始化

1.什么是Dag&#xff1f; 有向无环图(Directed Acyclic Graph)&#xff0c;简称DAG&#xff0c;是一种有向图&#xff0c;其中没有从节点出发经过若干条边后再回到该节点的路径。换句话说&#xff0c;DAG中不存在环路。这种数据结构常用于表示并解决具有依赖关系的问题。 DAG的…

什么是损失函数?常见的损失函数有哪些?

损失函数 什么是损失函数&#xff1f;损失函数作用如何设计损失函数常见的损失函数有哪些&#xff1f; 什么是损失函数&#xff1f; 损失函数&#xff08;Loss Function&#xff09;&#xff0c;也称为误差函数&#xff0c;是机器学习和深度学习中的一个重要概念。它用于衡量模…

python怎么打开编辑器

1、在电脑开始菜单中点击所有程序&#xff0c;找到Python程序&#xff0c;点击其中idle。 2、然后点击左上角的“File”&#xff0c;打开菜单&#xff0c;在下拉菜单中选择“New File”选项&#xff0c;就可打开python编辑器了。 3、在打开的python编辑器中就可以输入自己想写的…

105.游戏安全项目-基址的技术原理-分析技巧

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a;易道云信息技术研究院 本人写的内容纯属胡编乱造&#xff0c;全都是合成造假&#xff0c;仅仅只是为了娱乐&#xff0c;请不要盲目相信…

如何衡量企业品牌力?判断指标有哪些?

企业品牌力是指品牌在市场中的竞争力和影响力&#xff0c;它反映了品牌的价值、知名度、忠诚度、感知质量、差异化以及市场表现等方面。要去衡量一个企业的品牌力&#xff0c;大多从品牌的知名度、忠诚度、所占市场份额、顾客口碑、社媒影响力、品牌资产价值等多方面去判断。我…

sqoop的安装与简单使用

文章目录 一、安装1、上传&#xff0c;解压&#xff0c;重命名2、修改环境变量3、修改配置文件4、上传驱动包5、拷贝jar包 二、import命令1、将mysql的数据导入到hdfs上2、将mysql的数据导入到hive上3、增量导入数据 三、export命令1、从hdfs导出到mysql中2、从hive导出到mysql…

企业微信oauth2提示应用无法使用

问题描述&#xff1a; 生成oauth2之后&#xff0c;我a公司是服务商&#xff0c;我给b公司的人去点授权链接会提示这个 应用服务商还没有在企业微信为你开通接口调用许可」&#xff0c;导致无法使用此应用&#xff0c;请联系服务商开通 正文 你先要知道一件事&#xff01;&…

Jenkins私有化部署

最终目标 与GitLab配合&#xff0c;实践前端自动化&#xff0c;详细内容移步基于Jenkins和GitLab的前端自动化实践 前置条件 一台云服务器云服务器上已安装Docker了解Docker基础 使用Docker安装Jenkins 参考github文档安装 docker run --name docker_jenkins --privilege…

操作系统 --- 进程的同步和互斥问题以及进程互斥实现方法(软件、硬件实现)、同步机制遵循的四条准则

目录 一、进程同步 二、进程互斥 三、进程互斥的实现方法 3.1 软件实现 3.1.1 单标志法&#xff08;存在的主要问题&#xff1a;违背“空闲让进”原则&#xff09; 3.1.1.1 基本思想 3.1.1.2 单标志法的基本概念及执行流程 3.1.1.3 特点 3.1.2 双标志先检查法&#…

进程间的通信 2 消息队列

system V IPC IPC : Inter-Process Communication (进程间通讯) System V IPC 对象共有三种&#xff1a; 消息队列共享内存信号量 System V IPC 是由内核维护的若干个对象&#xff0c;通过ipcs命名查询 每个 IPC 对象都有一个唯一的 ID&#xff0c;可以通过ftok()函数生成 …

使用SoapUI、Postman工具调用Webservice方法

SoapUI工具更适合调用Webservice使用。 1.使用SoapUI工具调用Webservice 创建“New SOAP Project” 自行定义一个项目名称&#xff0c;输入wsdl地址&#xff1a; 在左侧列表找到方法名&#xff0c;双击“Request 1”, 在请求数据中&#xff0c;添加对应的参数&#xff0c;然…

Linux--禁止root用户通过ssh直接登录

原文网址&#xff1a;Linux--禁止root用户通过ssh直接登录_IT利刃出鞘的博客-CSDN博客 简介 本文介绍Linux服务器怎样禁止root用户通过ssh直接登录。 为什么要禁止&#xff1f; 因为root用户是每个Linux系统都有的&#xff0c;黑客可以使用root用户名尝试不同的密码来暴力破…

【笔记】自动驾驶预测与决策规划_Part3_路径与轨迹规划

文章目录 0. 前言1. 基于搜索的路径规划1.1 A* 算法1.2 Hybrid A* 算法 2. 基于采样的路径规划2.1 Frent Frame方法2.2 Cartesian →Frent 1D ( x , y ) (x, y) (x,y) —> ( s , l ) (s, l) (s,l)2.3 Cartesian →Frent 3D2.4 贝尔曼Bellman最优性原理2.5 高速轨迹采样——…