c++9月20日

1.思维导图

2.顺序表

头文件

#ifndef RECTANGLE_H
#define RECTANGLE_H

#include <iostream>

using namespace std;

using datatype = int ;//类型重定义

class Seqlist
{
private://私有权限
    datatype *ptr; //指向堆区申请空间的起始地址
    int size;//堆区空间的长度
    int len = 0;//顺序表的实际长度
public://公共权限
    void init(int );
    void menu();
    bool menu1();
    bool empty();
    bool full();
    void push_back(datatype);
    void show();
    void insert();
    void erase();
    void pop_back();
    void Size();
    void sort(bool);
    void at();
};


#endif // RECTANGLE_H

功能函数

#include"rectangle.h"
void Seqlist::init(int n)
{
    this->ptr = new datatype[n];//在堆区申请n个datatype类型的空间
    this->len = 0;//对Seqlist的实际长度初始化
    this->size = n;//确定Seqlist的最大长度
}
void Seqlist::menu()
{
    cout<<"****1.插入***************"<<endl;
    cout<<"****2.删除***************"<<endl;
    cout<<"****3.尾删***************"<<endl;
    cout<<"****4.求长度*************"<<endl;
    cout<<"****5.获取任意位置元素***"<<endl;
    cout<<"****6.排序***************"<<endl;
    cout<<"****7.查看所有元素*******"<<endl;
    cout<<"****8.退出***************"<<endl;
    int n;
    cout<<"请输入:";
    cin>>n;
    bool flag;
    switch(n)
    {
    case 1:insert();
        break;
    case 2:erase();
        break;
    case 3:pop_back();
        break;
    case 4:Size();
        break;
    case 5:at();
        break;
    case 6:flag = menu1();sort(flag);
        break;
    case 7:show();
        break;
    case 8:exit(0);
        break;
    }
}
bool Seqlist::empty()//判空
{
    return this->len == 0;//Seqlistd的实际长度为0时返回一个false(假)
}
bool Seqlist::full()//判满
{
    return this->len == this->size;//Seqlist的实际长度为size时返回一个true(真)
}
void Seqlist::push_back(datatype e)//尾插
{
    if(this->full())//判满
    {
        cout<<"顺序表已满"<<endl;
        return;
    }
    this->ptr[len++] = e;
}
void Seqlist::show()//查看顺序表内的数据
{
    if(this->empty())// 判空
    {
        cout<<"顺序表为空"<<endl;
        return;
    }
    for(int i = 0;i<this->len;i++)
    {
        cout<<this->ptr[i]<<" ";
    }
    cout<<endl;
}
void Seqlist::insert()//任意位置插入
{
    if(this->full())//判满
    {
        cout<<"顺序表已满"<<endl;
        return;
    }
    cout<<"输入插入位置:";
    int index;
    cin>>index;
    cout<<"输入插入数字:";
    datatype e;
    cin>>e;
    this->len++;
    for(int i=this->len;i>=index;i--)
    {
        this->ptr[i]=this->ptr[i-1];
    }
    this->ptr[index-1] = e;
}
void Seqlist::erase()//任意位置删除
{
    if(this->empty())// 判空
    {
        cout<<"顺序表为空"<<endl;
        return;
    }
    cout<<"输入删除位置:";
    int index;
    cin>>index;
    for(int i=index-1;i<this->len;i++)
    {
        this->ptr[i]=this->ptr[i+1];
    }
    this->len--;
}
void Seqlist::pop_back()//尾删
{
    if(this->empty())// 判空
    {
        cout<<"顺序表为空"<<endl;
        return;
    }
    this->ptr[len]=0;
    this->len--;
}
void Seqlist::Size()//顺序表长度
{
    if(this->empty())// 判空
    {
        cout<<"顺序表为空"<<endl;
        return;
    }
    cout<<"长度为:"<<this->len<<endl;
}
bool Seqlist::menu1()
{
    cout<<"1.升序"<<endl;
    cout<<"2.降序"<<endl;
    bool flag;
    int n;
    cin>>n;
    if(n==1)
    {
        flag=true;
    }
    else
    {
        flag=false;
    }
    return flag;
}
void Seqlist::sort(bool flag)//排序
{
    if(this->empty())// 判空
    {
        cout<<"顺序表为空"<<endl;
        return;
    }
    int i,j;
    for(i=1;i<this->len;i++)
    {
        for(j=0;j<this->len-i;j++)
        {
            if(flag!=0&&this->ptr[j]>this->ptr[j+1])
            {
                int temp = this->ptr[j];
                this->ptr[j]=this->ptr[j+1];
                this->ptr[j+1]=temp;
            }
            else if(flag==0&&this->ptr[j]<this->ptr[j+1])
            {
                int temp = this->ptr[j];
                this->ptr[j]=this->ptr[j+1];
                this->ptr[j+1]=temp;
            }
        }
    }
}
void Seqlist::at()//获得数据
{
    if(this->empty())// 判空
    {
        cout<<"顺序表为空"<<endl;
        return;
    }
    int inex;
    cout<<"输入获取位置:";
    cin>>inex;
    if(inex>this->len)
    {
        cout<<"该位置为空";
    }
    else
    {
    cout<<"该位置为"<<this->ptr[inex-1]<<endl;
    }
}

主函数

#include"rectangle.h"
int main()
{
    Seqlist s1;
    s1.init(5);
    int arr[3]={1,3,5};
    for(int i=0;i<3;i++)
    {
        s1.push_back(arr[i]);
    }
    while(1)
    {
        s1.menu();
    }
    return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

汽车一键启动开关

‌ 一键启动点火开关是汽车上的一个重要功能&#xff0c;它替代了传统的机械钥匙&#xff0c;实现了简约的打火和熄火操作‌。移动管家一键启动点火开关的详细介绍&#xff1a; 汽车一键启动按钮12V24V通用超薄型汽车一键启动按键发动机启动按钮点火开关。超薄&#xff0c;…

软件测试学习笔记丨curl命令发送请求

本文转自测试人社区&#xff0c;原文链接&#xff1a;https://ceshiren.com/t/topic/32332 一、简介 cURL是一个通过URL传输数据的&#xff0c;功能强大的命令行工具。cURL可以与Chrome Devtool工具配合使用&#xff0c;把浏览器发送的真实请求还原出来&#xff0c;附带认证信…

嵌入式项目:STM32平衡车详解 (基础知识篇) (基于STM32F103C8T6)

前言&#xff1a; 本文是基于B站草履虫编写的平衡车相关内容&#xff0c;包括模块和基础知识&#xff0c;结合代码进行讲解&#xff0c;将知识进行汇总 &#xff08;由于本篇内容较长&#xff0c;请结合目录使用) 注&#xff1a;基于开源精神&#xff0c;本文仅供学习参考 目…

如何用ChatGPT制作一款手机游戏应用

有没有想过自己做一款手机游戏&#xff0c;并生成apk手机应用呢&#xff1f;有了人工智能&#xff0c;这一切就成为可能。今天&#xff0c;我们就使用ChatGPT来创建一个简单的井字棋游戏&#xff08;Tic-Tac-Toe&#xff09;&#xff0c;其实这个过程非常轻松且高效。 通过Cha…

windows 使用PortAudio 对电脑进行录音

PortAudio 采用回调方式&#xff0c;这样可以一帧一帧的处理 头文件&#xff1a; #ifndef __CAPTURE_AUDIO__ #define __CAPTURE_AUDIO__#include <functional> #include <windows.h> #include "portaudio.h"#define SAMPLE_RATE 44100class CaptureAu…

大数据毕业设计选题推荐-国潮男装微博评论数据分析系统-Hive-Hadoop-Spark

✨作者主页&#xff1a;IT毕设梦工厂✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、PHP、.NET、Node.js、GO、微信小程序、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇…

JavaSE——lombok、juint单元测试、断言

一、lombok的使用 默认jvm不解析第三方注解&#xff0c;需要手动开启 链式调用 二、juint单元测试 下载juint包 public class TestDemo {// 在每一个单元测试方法执行之前执行Beforepublic void before() {// 例如可以在before部分创建IO流System.out.println("befor…

89个H5小游戏源码

下载地址&#xff1a;https://download.csdn.net/download/w2sft/89791650 亲测可用&#xff0c;代码完整&#xff0c;都是htmljs&#xff0c;保存到本地即可。 游戏截图&#xff1a;

【AI创作组】工程方向的硕士研究生学习Matlab的路径

1. MATLAB软件概述 1.1 MATLAB发展历程 MATLAB自20世纪70年代诞生以来,已经经历了多次重要的版本更新和功能扩展。 初始版本:MATLAB的前身只是一个简单的交互式矩阵计算器,由Cleve B. Moler博士在1970年代初期开发,目的是为了方便学生和研究人员使用线性代数软件包LINPAC…

游戏如何对抗改包

游戏改包是指通过逆向分析手段及修改工具&#xff0c;来篡改游戏包内正常的设定和规则的行为&#xff0c;游戏包被篡改后&#xff0c;会被植入/剔除模块进行重打包。 本期图文我们将通过实际案例分析游戏改包的原理&#xff0c;并分享游戏如何应对改包问题。 安卓平台常见的改…

车载软件调试工具系列---Trace32简介UI界面简介

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…

基于nodejs+vue的旅游管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏&#xff1a;Java精选实战项目…

想要高音质的开放式耳机?看看开放式蓝牙耳机排行榜前列的这些品牌!

​开放式蓝牙耳机现在超流行&#xff0c;不仅年轻人爱用&#xff0c;连不少上了年纪的人也喜欢在公园里散步时戴上。这些耳机无论是听歌、学习、健身还是办公&#xff0c;都能派上用场。到了2024年&#xff0c;想要挑到一款既好用又好听的开放式蓝牙耳机&#xff0c;得好好比较…

springboot+大数据基于数据挖掘的招聘信息可视化大屏系统【内含源码+文档+部署教程】

博主介绍&#xff1a;✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久&#xff0c;选择我们就是选择放心、选择安心毕业✌ &#x1f345;由于篇幅限制&#xff0c;想要获取完整文章或者源码&#xff0c;或者代做&am…

基于gorm.io/sharding分表中间件使用案例

项目背景 项目中需要用到mysql的分表场景&#xff0c;调研了一些常用的分库分表中间件&#xff0c;比如&#xff0c;mycat&#xff0c;小米的Gaea&#xff0c;这两个中间件太重了&#xff0c;学习成本较大&#xff0c;另外mycat不是go写的。我们需要一个轻量级的go版本的分表中…

Android使用OpenCV 4.5.0实现扑克牌识别(源码分享)

一、显示效果展示 二、OpenCV 4.5.0 OpenCV 4.5.0是OpenCV&#xff08;Open Source Computer Vision Library&#xff0c;开源计算机视觉库&#xff09;的一个重要更新版本&#xff0c;该版本在多个方面进行了优化和新增了多项功能。 三、ONNX模型 ONNX&#xff08;Open Neu…

HCIP——HCIA回顾

第一章.HCIA复习 引入场景 其实IA我们主要学习的无非就是数据包在网络中传递的基本过程&#xff0c;我们设计一个场景&#xff0c;通过回顾web页面的请求过程&#xff0c;将IA学过的基本网络工作原理来串一遍。 (在本例中&#xff0c;ISP网络为学校提供了DNS服务&#xff0c;…

学习C++的第七天!

1.虚函数是在基类中用 virtual 关键字声明的函数&#xff0c;可以在派生类中被重写。纯虚函数是在虚函数的基础上&#xff0c;在基类中被初始化为 0 的函数&#xff0c;含有纯虚函数的类是抽象类&#xff0c;不能被实例化。 2.如果基类的析构函数不是虚函数&#xff0c;当通过…

今年双十一不被割韭菜!要买就要高品质好物~总结五款好物推荐!

双十一购物盛宴如约而至&#xff0c;面对琳琅满目的商品是否感到选择有些迷茫&#xff1f;别担心&#xff0c;专为选择困难症的朋友们准备了一份精选好物清单&#xff0c;旨在丰富您的数字生活体验。无需犹豫&#xff0c;这份指南将助您轻松锁定心仪之选&#xff0c;把握时机&a…

ER-Nerf 数字人训练视频的准备

数字人训练视频的准备 分辨率帧率时长背景处理推荐工具举个例子 分辨率 布局Value横屏1920x1080竖屏1080x1920 帧率 25fps 时长 大于1分钟&#xff08;60秒&#xff09;的视频 解释&#xff1a; 1、数字人采用循环的播放模式&#xff0c;时长越长会降低出现前后拼接的现象…