C++: day6

news2024/11/26 4:30:43

1 思维导图

 

 

 

 

2 顺序栈模板和顺序队列模板

#include <iostream>

using namespace std;

template <typename T>
class My_stack
{
private:
    T *ptr;   //指向堆区空间
    int top;    //记录栈顶元素

 public:
    //无参构造
    My_stack():ptr(new T[10]), top(-1){}

    //有参构造
    My_stack(int size = 10):ptr(new T[size]), top(-1){}

    //析构函数
    ~My_stack(){}

    //判空函数
    bool My_empty()
    {
        if (-1 == top)
            return true;
        return false;
    }

    //判满函数
    bool My_full(int size = 10)
    {
        if (top == size - 1)
            return true;
        return false;
    }

    //入栈函数
    void My_inqueue(T n)
    {
        *(ptr+(++top)) = n;
    }

    //出栈函数
    void My_push()
    {
        cout << "出栈元素:" << *(ptr+(top--)) <<endl;
    }

    //遍历函数
    void output()
    {
        cout << "遍历:";
        for (int i=0; i<=top; i++)
        {
            cout << ptr[i] << " ";
        }
        cout <<endl;
    }

    //获取栈顶元素的引用
    int Top()
    {
        cout << "栈顶元素:" << *(ptr+top) <<endl;
        return *(ptr+top);
    }

    //返回容纳的元素个数
    void My_size()
    {
        cout << "元素个数:" << top+1 <<endl;
    }

};

int main()
{
    int size, n;
    char m;
    cout << "请输入队列容量:";
    cin >> size;

    My_stack <int> s(size);

    while(1)
    {
        if (s.My_full(size))
        {
            cout << "队列满" <<endl;
            break;
        }

        cout << "输入入栈元素:";
        cin >> n;

        s.My_inqueue(n);
    }

    while(1)
    {
        cout << "是否出栈y/n:";
        cin >> m;

        if ('n' == m)
            break;

        if (s.My_empty())
        {
            cout << "队列空" <<endl;
            break;
        }

        s.My_push();

        s.output();
    }

    s.Top();

    s.My_size();

    return 0;
}
#include <iostream>

using namespace std;

template <typename T>
class My_stack
{
private:
    T *ptr;   //指向堆区空间
    int front;    //队头
    int rear;   //队尾

 public:
    //无参构造
    My_stack():ptr(new T[10]), front(0), rear(0){}

    //有参构造
    My_stack(int size = 10):ptr(new T[size]), front(0), rear(0){}

    //析构函数
    ~My_stack()
    {
        delete []ptr;
    }

    //判空函数
    bool My_empty()
    {
        if (rear == front)
            return true;
        return false;
    }

    //判满函数
    bool My_full(int size)
    {
        if (front == (rear+1)%size)
            return true;
        return false;
    }

    //入队函数
    void My_ins(T n, int size)
    {
        ptr[rear] = n;
        rear = (rear+1)%size;
    }

    //出队函数
    void My_push(int size)
    {
        cout << "出队元素:" << ptr[front] <<endl;
        front = (front+1)%size;
    }

    //遍历函数
    void output(int size)
    {
        cout << "遍历:";
        for (int i=front; i!=rear; i=(i+1)%size)
        {
            cout << ptr[i] << " ";
        }
        cout <<endl;
    }

    //元素个数
    void My_number(int size)
    {
        cout << "元素个数:" << (size-front+rear)%size <<endl;
    }

    //访问第一个元素
    void My_front()
    {
        cout << "front = " << ptr[front] <<endl;
    }
    //访问最后的元素
    void My_back()
    {
        cout << "rear = " << ptr[rear-1] <<endl;
    }
};

int main()
{
    int size, n;
    char m;
    cout << "请输入队列容量:";
    cin >> size;

    My_stack <int> s(size);

    while(1)
    {
        if (s.My_full(size))
        {
            cout << "队列满" <<endl;
            break;
        }

        cout << "输入入队元素:";
        cin >> n;

        s.My_ins(n, size);
    }

    while(1)
    {
        cout << "是否出队y/n:";
        cin >> m;

        if ('n' == m)
            break;

        if (s.My_empty())
        {
            cout << "队列空" <<endl;
            break;
        }

        s.My_push(size);

        s.output(size);

        s.My_number(size);

        s.My_front();

        s.My_back();
    }

    return 0;
}

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

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

相关文章

ROS-Moveit机械臂追踪二维码(四)

ROS-Moveit机械臂追踪二维码(四) 在仿真环境增加相机 <gazebo reference"camera_depth_frame"><sensor name"camera1" type"depth"><always_on>true</always_on><update_rate>20.0</update_rate><came…

多路选择器设计实现

文章目录 一、多路选择器二、二选一多路选择器三、四选一多路选择器设计 一、多路选择器 多路选择器是数据选择器的别称。在多路数据传送过程中&#xff0c;能够根据需要将其中任意一路选出来的电路&#xff0c;叫做数据选择器&#xff0c;也称多路选择器或多路开关。 二、二…

【从删库到跑路】MySQL数据库的索引(一)——索引的结构(BTree B+Tree Hash),语法等

&#x1f38a;专栏【MySQL】 &#x1f354;喜欢的诗句&#xff1a;更喜岷山千里雪 三军过后尽开颜。 &#x1f386;音乐分享【如愿】 &#x1f970;欢迎并且感谢大家指出小吉的问题 文章目录 &#x1f354;概述&#x1f354;索引结构⭐B-Tree多路平衡查找树&#x1f3f3;️‍&a…

【分布式事务】CAP定理和Base理论

文章目录 1、事务的ACID原则2、分布式服务案例3、CAP定理4、Base理论5、分布式事务模型 1、事务的ACID原则 所有的事务都要满足ACID原则&#xff0c;在单体架构中&#xff0c;只有一个服务&#xff0c;这个服务访问一个数据库&#xff0c;场景简单。基于数据库本身的特性&…

React 组件使用

React 组件是一个 js 函数&#xff0c;函数可以添加 jsx 标记 当前页使用组件&#xff0c;基本使用 注意&#xff1a;组件的名称&#xff0c;第一个字母一定要大写&#xff0c;否则会报错 import { createRoot } from "react-dom/client"; import "./index.c…

深度学习(30)—— DeformableDETR(1)

深度学习&#xff08;30&#xff09;—— DeformableDETR&#xff08;1&#xff09; 原本想在一篇文章中就把理论和debug的过程都呈现&#xff0c;但是发现内容很多&#xff0c;所以就分开两篇&#xff0c;照常先记录理论学习过程&#xff0c;然后是实践过程。 注&#xff1a;…

Flutter学习—— Vscode创建项目

目录 一、Vscode创建项目 二、补充五种项目类型 Application: Module 模块开发&#xff0c; Package开发 Plugin 插件开发 Skeleton 骨架开发 一、Vscode创建项目 1.快捷键 CtrlShiftP 打开命令面板&#xff0c;选择新项目 2.选择需要开发的项目类型 Application 应用开…

勾股dev部署

1.克隆项目 项目的地址&#xff1a; https://gitee.com/gouguopen/dev?_fromgitee_search#-%E5%BC%80%E6%BA%90%E5%8A%A9%E5%8A%9B 可以采用git clone https://gitee.com/gouguopen/dev.git 或者使用下载压缩包的形式 2.进入项目的根目录 cd gougudev 3.下载php依赖 需要…

三种策略改进的沙猫群优化算法(MSCSO),与白鲸、蜣螂、麻雀等多种算法进行比较,MATLAB代码...

沙猫群优化算法(sand cat swarm optimiza⁃ tion,SCSO)是 2022年提出的元启发式优化算法&#xff0c;该算法灵感来源于沙猫的捕食行为&#xff0c;沙猫群会通过搜索阶段和捕食阶段获得食物。其中算法额外使用自适应的rG和R以达到搜索阶段和捕食阶段的无缝 切换。该算法具有寻优…

刷题日记09《图论基础》

图的存储结构 对于图结构而言&#xff0c;常见的存储结构主要有两种&#xff1a;邻接表和邻接矩阵&#xff1a; 邻接表很直观&#xff0c;我把每个节点 x 的邻居都存到一个列表里&#xff0c;然后把 x 和这个列表关联起来&#xff0c;这样就可以通过一个节点 x 找到它的所有相邻…

java 8树结构返回前端

接口&#xff1a; EntityResult getOrgReal(Map<String, Object> mapParam); 实现类&#xff1a; PMethodHandle(runMethodName "TQmsZjxmzbImpl.getOrgReal", timeout 600) Override public EntityResult getOrgReal(Map<String, Object> mapParam…

vs2015 工程组织与动态加载

10.Visual Studio动态加载_哔哩哔哩_bilibili 1.工程组织 ① researcher.cpp #include "nn/nn.h"#include "nn/factory.h" #include "nn/factory_impl/factory_impl.h"#include <iostream>int main() {int ret 0;factory_i* fct new f…

Invalid bound statement (not found),springboot扫描不到jar包中mapper文件的问题处理

参考这位大佬的博客&#xff1a;Invalid bound statement (not found)&#xff0c;springboot扫描不到jar包中mapper文件的问题处理_springboot扫描不到mapper_Jamesharden13的博客-CSDN博客 classpath:和classpath*:的区别_classpath和classpath*区别_明快de玄米61的博客-CSD…

JavaWeb课程设计项目实战(06)——项目编码实践3

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 在本教程教程中&#xff0c;我们实现学生列表的显示。 Student 请在bean包下创建Student类&#xff0c;代码如下&#xff1a; package com.cn.bean; /*** 本文作者&#…

MIMIC数据库申请流程

MIMIC是一个公开的临床数据库&#xff0c;之前查找了很多资料&#xff0c;在这里记录一下整个申请流程。 一、CITI证书 要申请mimic数据库的使用权限&#xff0c;首先需要有CITI证书&#xff0c;这是一个国际知名的网络训练课程&#xff0c;其中就有用于健康资讯隐私及保护 (…

Spring 用了哪些设计模式

关于设计模式&#xff0c;如果使用得当&#xff0c;将会使我们的代码更加简洁&#xff0c;并且更具扩展性。本文主要讲解Spring中如何使用策略模式&#xff0c;工厂方法模式以及Builder模式。 策略模式 关于策略模式的使用方式&#xff0c;在Spring中其实比较简单&#xff0c…

408-2009

一、选择题&#xff08;2 分/题&#xff09; 1.为解决计算机主机与打印机之间速度不匹配问题&#xff0c;通常设置一个打印数据缓冲区&#xff0c;主机将要输出的数据一次写入该缓冲取&#xff0c;而打印机则依次从该缓冲区中取出数据。该缓冲区的逻辑结构应该是______。 A.栈 …

iOS--编译连接的过程_2

文章目录 iOS编译&#xff08;一&#xff09;编译器前端 编译器后端执行一次XCode build的流程 IPA包的内容二进制文件的内容iOS Link Map File文件说明1. Link Map File 是什么2. Link Map File 有什么用3. 生成 Link Map File查看Link Map File1&#xff09;路径部分计算机系…

Linux进程间通信(fifo有名管道)

文章目录 前言一、有名管道概念讲解二、命令行创建fifo三、非命令行创建fifo四、fifo和管道对比总结 前言 上篇文章我们讲解了无名管道&#xff0c;这篇文章我们就来讲解一下有名管道。 一、有名管道概念讲解 有名管道(fifo) 有名管道&#xff08;FIFO&#xff09;是一种命…

jmeter请求重试实现思路

文章目录 一、背景二、尝试的解决方案三、最终解决方案&#xff1a;jmeter retrier插件&#xff01; 一、背景 最近系统需要压测一些活动&#xff0c;场景是新建抽奖活动之后&#xff0c;每隔2s查询1次&#xff08;最多3次&#xff0c;3次后还是失败就算失败&#xff09;&…