2023.04.24 c++第六讲

news2024/11/23 16:42:49

作业:

1. 手动实现顺序栈,要求实现数据结构中,所有栈的相关操作

#include <iostream>
#define MAXSIZE 20               //宏定义,栈的最大容量
using namespace std;

template <typename T>
class stacklink
{
private:
    T data[MAXSIZE];        	//数据元素
    int top = -1;                    //栈顶
public:
    //无参构造
    stacklink() {}
    //有参构造
    stacklink(T e):data(e){}
    //析构函数
    ~stacklink(){}
    //判空
    bool empty()
    {
        return (top == -1);        //栈空则返回1
    }
    //判满
    bool full()
    {
        return (top == MAXSIZE-1); //栈满则返回1
    }
    //入栈
    T push(T e)
    {
        if(1 == full())
        {
            cout << "栈满..." <<endl;
            return -1;
        }
        top++;
        data[top] = e;
        return 0;
    }
    //出栈
    T pop()
    {
        if(1 == empty())
        {
            cout << "栈空..." <<endl;
            return -1;
        }
        cout << "出栈元素为: " << data[top] <<endl;
        top--;
        return 0;
    }
    //栈的遍历
    void output();
};

//全局函数,栈的遍历
template <typename T>
void stacklink<T>::output()
{
    cout << "栈内元素: ";
    for(int i=0;i<=top;i++)       //循环遍历栈
    {
        cout << data[i] <<"  ";
    }
    cout <<endl;
}
int main()
{
    stacklink<int> s;
    s.push(2);        //入栈
    s.push(23);
    s.push(44);
    s.push(11);

    s.output();      //遍历  2 23 44 11

    s.pop();         //出栈  11
    s.pop();         //出栈  44

    s.output();      //遍历  2 23

    return 0;
}

运行结果:

 

2. 手动实现循环顺序队列,要求实现数据结构中,所有队列的相关操作

#include <iostream>

#define MAXSIZE 20               //宏定义,队的最大容量
using namespace std;

template <typename T>
class queue
{
private:
    T data[MAXSIZE];        	//数据元素
    int front = 0;              //队头
    int rear = 0;               //队尾
public:
    //无参构造
    queue() {}
    //有参构造
    queue(T e):data(e){}
    //析构函数
    ~queue(){}
    //判空
    bool empty()
    {
        return (front == rear);        //队空则返回1
    }
    //判满
    bool full()
    {
        return (front == (rear+1)%MAXSIZE); //队满则返回1
    }
    //入队
    T push(T e)
    {
        if(1 == full())
        {
            cout << "队满..." <<endl;
            return -1;
        }
        data[rear] = e;
        rear = (rear+1)%MAXSIZE;
        return 0;
    }
    //出队
    T pop()
    {
        if(1 == empty())
        {
            cout << "队空..." <<endl;
            return -1;
        }
        cout << "出队元素为: " << data[front] <<endl;
        front = (front+1)%MAXSIZE;
        return 0;
    }
    //队列的遍历
    void output();
    //队列元素个数计算
    void count();
};

//全局函数,栈的遍历
template <typename T>
void queue<T>::output()
{
    cout << "队内元素: ";
    for(int i=front;i!=rear;i=(i+1)%MAXSIZE)       //循环遍历队
    {
        cout << data[i] <<"  ";
    }
    cout <<endl;
}
template <typename T>
void queue<T>::count()
{
    cout << "队列中元素个数为: " << (MAXSIZE-front+rear)%MAXSIZE <<endl;
}

int main()
{
    queue<int> q;
    q.push(2);        //入队
    q.push(23);
    q.push(44);
    q.push(11);

    q.output();      //遍历  2 23 44 11
    q.count();       // 4

    q.pop();         //出队  2
    q.pop();         //出队  23

    q.output();      //遍历  44 11
    q.count();       //2
    return 0;
}

运行结果:

 

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

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

相关文章

ESXi8.0安装Windows10系统教程

本篇教程主要教大家怎么在ESXi虚拟机上安装Windows10系统&#xff0c;首先安装Windows10需要准备一个ISO系统镜像文件&#xff0c;我们可以去MSDN或者是微软官网下载。 镜像下载教程&#xff1a; 下两种方法都可以下载ISO镜像文件&#xff0c;任选其一下载即可 方法一&#xf…

BDD110 HNLP205879R1设备控制、监视、报警及打印报表等管理功能

​ BDD110 HNLP205879R1设备控制、监视、报警及打印报表等管理功能 基于ABB AC500系列PLC的水泥生产线控制系统 随着中国经济的迅速发展&#xff0c;各行各业对水泥的需求日益增加。目前国内外各大水泥企业纷纷在华兴建大型干法旋窑水泥生产线&#xff0c;这为水泥行业的发展提…

【SWAT水文模型】ArcSWAT安装

SWAT水文模型-ArcSWAT安装 安装ArcSWAT1.1 下载ArcSWAT1.2 安装ArcSWAT1.3 加载ArcSWAT 参考 SWAT水文模型原理及数据库简介可参见另一博客文章-【水文模型】SWAT水文模型原理及数据库简介。 本博客主要介绍ArcSWAT的安装。 安装ArcSWAT 1.1 下载ArcSWAT 安装之前&#xff0…

广域通信网 - 差错控制(停等 ARQ 协议、选择重发 ARQ 协议、后退 N 帧 ARQ 协议)

文章目录 1 概述2 差错控制的办法2.1 停等 ARQ 协议2.2 选择重发 ARQ 协议2.3 后退 N 帧 ARQ 协议 3 扩展3.1 流量控制3.2 网工软考真题 1 概述 #mermaid-svg-ju8w1gQxodkcBbaB {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#me…

【应急响应】后门攻击检测指南Rookit内存马权限维持WINLinux

文章目录 Windows实验常规后门&#xff1a; 网络对外连接查看 自启动测试&#xff1a;隐藏账户映像劫持屏保&登录 Linux实验常规后门&#xff1a;Rootkit后门&#xff1a;GScan rkhunter权限维持后门&#xff1a;GScan rkhunter Web层面&#xff1a;通用系统层面 主机层面后…

网络设备发现工具

什么是网络设备发现 网络设备发现是识别和映射网络基础架构&#xff08;如路由器、交换机、集线器、防火墙、无线接入点、服务器、虚拟机等&#xff09;中存在的设备和接口的过程。网络发现是网络管理的第一步&#xff0c;也是成功监控解决方案的关键。该过程不仅涉及发现网络…

【超算/先进计算学习】日报6

目录 今日已完成任务列表遇到的问题及解决方案任务完成详细笔记传统性能优化从体系结构角度理解四种计算优化途径-主频/缓存/流水线/超标量优化途径的有效适用条件存储墙与层次式存储结构数据局部性与cache循环合并循环展开循环交换循环分布循环不变量外提循环分块循环分裂 优化…

zabbix环境准备

zabbix基础设置(运维笔记) 准备三台主机配置主机名hostnamectl set-hostname --static zabbixserver.cluster.comvi /etc/hosts192.168.126.143 zabbixserver.cluster.com 192.168.126.142 agent1.cluster.com 192.168.126.141 agent2.cluster.com三台机器同步时间 ntpdate…

springboot中统一功能处理浅析

在springboot工程中实现统一功能的处理&#xff0c;主要分析以下3个统一功能场景&#xff1a; 1、统一用户登录权限验证 2、统一数据格式返回 3、统一异常处理 1、统一用户登录权限验证 用户登录权限验证从最初每个方法中自己验证用户登录权限&#xff0c;逐步发展到进行统一用…

[HDU - 4578]Transformation(线段树+多重懒标记)

[HDU - 4578]Transformation&#xff08;线段树多重懒标记&#xff09; 一、问题二、分析1、节点定义2、pushup3、pushdown&#xff08;1&#xff09;每种标记如何下传&#xff1f;赋值乘法加法 &#xff08;2&#xff09;三种标记下传的优先级问题 三、代码 一、问题 二、分析…

object.assgin,事件,screen。client,offset ,http等

js进阶-对象和BOM-day02 今日学习目标 对象进阶&#xff08;***&#xff09; Date时间对象&#xff08;了解&#xff09; BOM对象&#xff08;location对象 history对象&#xff09; 1、对象进阶Object内置方法 1、Object.assign&#xff08;** ***&#xff09; 作用&#xf…

GPT3.5, InstructGPT和ChatGPT的关系

GPT-3.5 GPT-3.5 系列是一系列模型&#xff0c;从 2021 年第四季度开始就使用文本和代一起进行训练。以下模型属于 GPT-3.5 系列&#xff1a; code-davinci-002 是一个基础模型&#xff0c;非常适合纯代码完成任务text-davinci-002 是一个基于 code-davinci-002 的 InstructG…

【 动态SQL 的使⽤ 】

文章目录 一、动态 SQL 是什么二、动 态 SQL 标签2.1 < if >标签2.2 < trim >标签2.3 < where >标签2.4 < set >标签2.5 < foreach >标签 一、动态 SQL 是什么 Mybatis 动态 sql 可以让我们在 Xml 映射文件内&#xff0c;以标签的形式编写动态 …

【多微电网】含多微电网租赁共享储能的配电网博弈优化调度(Matlab代码实现)

&#x1f4a5; &#x1f4a5; &#x1f49e; &#x1f49e; 欢迎来到本博客 ❤️ ❤️ &#x1f4a5; &#x1f4a5; &#x1f3c6; 博主优势&#xff1a; &#x1f31e; &#x1f31e; &#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 …

计算机办公自动化——Python批量生成请假条

Python使用openpyxl、docx批量生成请假条 前言第三方库的安装示例代码运行效果 前言 加入你有一个下图所示的表格&#xff0c;需要批量生成他们的请假条&#xff0c;你会选择如何做呢&#xff1f;是一步一步的手打&#xff0c;还是呼唤请假人手打呢&#xff1f; 下面我们来看…

STM32学习,从点灯开始

大家好&#xff0c;我是程序员小哈。 综合实例&#xff1a;自动洗碗机的分享&#xff0c;上周五的直播完成了核心板的焊接&#xff0c;板子设计好了&#xff0c;也焊接完毕了&#xff0c;那么如何验证是否正确呢&#xff0c;既然是从0到1的教程&#xff0c;那么我们就先实现一…

PyTorch深度学习实战 | 基于深度学习的电影票房预测研究

基于深度学习的映前票房预测模型(Cross&Dense网络结构模型)&#xff0c;该模型通过影片基本信息如&#xff1a;电影类型、影片制式、档期和电影的主创阵容和IP特征等信息对上映影片的票房进行预测。 本篇采用451部电影作为训练模型&#xff0c;最后再在194部影片上进行测试…

Spring AOP实现原理

从入口 org.springframework.context.support.AbstractApplicationContext#refresh 开始看 找到Bean的创建方法进入: 再进入详细方法: 找到getBean(beanName)&#xff1a; 找到doGetBean(xxx,xxx,xxx,xxx); 找到实际的Bean创建方法createBean(beanName, mdb, args);可以非常明显…

【C++学习笔记】变量和基本类型

2.1 基本内置类型 C中包括 算数类型(arithmetic type) 和 空类型(void) 的数据类型&#xff0c;其中&#xff0c;算数类型包括字符、整型数、布尔值和浮点数&#xff1b;空类型不对应具体的值&#xff0c;当函数不返回值时用void作为返回类型 2.1.1算数类型 对于数组或者字符…

一篇搞定CDH 5.x 核心概念与集群部署

一、概述 1.1 Hadoop发行商 Apache:开源免费 CDH: Clouder公司研发。只支持64位操作系统。更加详细信息后面会介绍。 HDP: Hortonworks公司研发。 1.2 公司常用版本及介绍 apache -> cdh | hdp 常见问题&#xff1a; apache与cdh的比较&#xff1f;&#xf…