day42

news2025/5/26 12:59:35
#include <iostream>

using namespace std;
template <typename T>
class stu
{
private:
    T num[20];
    T head;
    T low;
public:
    stu(){}
    stu(T h,T l):head(h),low(l)
    {
        cout<<"有参构造"<<endl;
    }
    ~stu()
    {
        cout<<"析构函数"<<endl;
    }
    stu(const stu &other):head(other.head),low(other.low)
    {
        cout<<"拷贝构造函数"<<endl;
    }
    //判空
    bool queue_empty();
    //判满
    bool queue_full();
    //入队
    void queue_push(int n);
    //出队
    void queue_pop();
    //清空
    void queue_null();
    //队列长度
    void queue_size();
};
//判空
template <typename T>
bool stu<T>::queue_empty()
{
    if(this->low==this->head)
    {
        return 1;
    }
    return 0;
}
//判满
template <typename T>
bool stu<T>::queue_full()
{
    if((this->low+1)%20==head)
    {
        return 1;
    }
    return 0;
}
//入队
template <typename T>
void stu<T>::queue_push(int n)
{
    if(queue_full())
    {
        cout<<"队列已满"<<endl;
    }
    this->num[this->low]=n;
    this->low=(this->low+1)%20;
    cout<<"入队成功"<<endl;
}
//出队
template <typename T>
void stu<T>::queue_pop()
{
    if(queue_empty())
    {
        cout<<"出队失败"<<endl;
    }
    cout<<"出队成功"<<this->num[this->head]<<endl;
    this->head=(this->head+1)%20;
}
//清空
template <typename T>
void stu<T>::queue_null()
{
    while(1)
    {
        cout<<this->num[this->head]<<endl;
        this->head=(this->head+1)%20;
        if(this->head==this->low)
        {
            cout<<"清空成功"<<endl;
            break;
        }
    }
}
//队列长度
template <typename T>
void stu<T>::queue_size()
{
    cout<<"队列长度"<<(this->low-this->head+20)%20<<endl;
}
int main()
{
    stu<int> p1(0,0);
    p1.queue_push(5);
    p1.queue_push(8);
    p1.queue_push(10);
    p1.queue_pop();
    p1.queue_size();
    p1.queue_null();
    p1.queue_size();
    return 0;
}

#include <iostream>

using namespace std;
template<typename T>
class stu
{
private:
    T num[20];
    T top;
public:
    stu(){}
    //构造
    stu(int n,int t)
    {
        num[top]=n;
        top=t;
        cout<<"stu::构造函数"<<endl;
    }
    //析构
    ~stu()
    {
        cout<<"stu::析构函数"<<this<<endl;
    }
    //拷贝
    stu(const stu &other):num(other.num),top(other.top)
    {
        cout<<"拷贝构造函数"<<endl;
    }
    //判空
    bool stack_empty();
    //判满
    bool stack_full();
    //入栈
    void  stack_push(int n);
    //出栈
    void stack_pop();
    //遍历栈
    void stack_show();
    //清空栈
    void stack_null();
    //获取栈顶元素
    void stack_top();
    //求栈的大小
    void stack_num();
};
//判空
template <typename T>
bool stu<T>::stack_empty()
{
    if(-1==top)
    {
        return 1;
    }
        return 0;
}
    //判满
template <typename T>
bool stu<T>::stack_full()
{
    if(19==top)
    {
        return 1;
    }
        return 0;
}
    //入栈
template <typename T>
void  stu<T>::stack_push(int n)
{
    this->top++;
    this->num[this->top]=n;
    cout<<"入栈成功"<<endl;
}
    //出栈
template <typename T>
void  stu<T>:: stack_pop()
{
    if(stack_empty())
    {
        cout<<"出栈失败"<<endl;
    }
    int n = this->num[this->top];
    cout<<"出栈成功:"<<n<<endl;
    this->top--;
}
    //遍历栈
template <typename T>
void  stu<T>:: stack_show()
{
    if(stack_empty())
    {
        cout<<"遍历失败"<<endl;
    }
    cout<<"从栈顶到栈底分别为"<<endl;
    for(int i=this->top;i>=0;i--)
    {
        cout<<this->num[i]<<"    ";
    }
    cout<<endl;
}
    //清空栈
template <typename T>
void  stu<T>:: stack_null()
{
    if(stack_empty())
    {
        cout<<"清空失败"<<endl;
    }
    for(int i=this->top;i>=0;i--)
    {
        this->num[i]=NULL;
    }
    cout<<"清空成功"<<endl;
}
    //获取栈顶元素
template <typename T>
void  stu<T>:: stack_top()
{
    cout<<"栈顶元素"<<this->num[this->top]<<endl;
}
    //求栈的大小
template <typename T>
void  stu<T>:: stack_num()
{
    cout<<"栈的大小:"<<this->top+1<<endl;
}



int main()
{
    stu<int> s1(0,-1);
    s1.stack_push(6);
    s1.stack_push(8);
    s1.stack_push(9);
    s1.stack_show();
    s1.stack_top();
    s1.stack_num();
    s1.stack_null();
    s1.stack_show();
    return 0;
}

 

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

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

相关文章

ELAS库计算双目视差图

ELAS源码下载&#xff1a;https://www.cvlibs.net/download.php?filelibelas.zip 代码结构目录 修改/src/main.cpp如下&#xff1a; /* Copyright 2011. All rights reserved. Institute of Measurement and Control Systems Karlsruhe Institute of Technology, GermanyThi…

三分钟学会一个新技能——使用Java操作Redis

目录 1、前置准备操作 1.1、为什么要进行前置准备操作 1.2、本地如何访问到云服务上Redis的6379端口号 1.3、配置步骤&#xff1a; 2、配置后本地主机如何操作 3、常用命令举例 3.1、通用命令举例 3.2、string相关命令举例 3.3、hash相关命令举例 3.4、list相关命令…

Pytorch从零开始实战03

Pytorch从零开始实战——天气识别 本系列来源于365天深度学习训练营 原作者K同学 文章目录 Pytorch从零开始实战——天气识别环境准备数据集模型选择模型训练数据可视化总结 环境准备 本文基于Jupyter notebook&#xff0c;使用Python3.8&#xff0c;Pytorch2.0.1cu118&…

【Linux学习笔记】 - 常用指令学习及其验证(上)

前言&#xff1a;本文主要记录对Linux常用指令的使用验证。环境为阿里云服务器CentOS 7.9。关于环境如何搭建等问题&#xff0c;大家可到同平台等各大资源网进行搜索学习&#xff0c;本文不再赘述。 由于本人对Linux学习程度尚且较浅&#xff0c;本文仅介绍验证常用指令的常用…

Writesonic:博客和内容创作者的终极写作助手

【产品介绍】 产品名称 Writesonic 上线时间 成立于2020年 具体介绍 Writesonic是一个强大的人工智能写作助手&#xff0c;它使用自然语言处理&#xff08;NLP&#xff09;和机器学习算法来生成内容&#xff0c;这些内容不仅写得好&#xff0c;而且还为SEO和转…

MFC中嵌入显示opencv窗口

在MFC窗体中建立一个Picture Control控件,用于显示opencv窗口 在属性中设置图片控件的资源ID为IDC_PIC1 主要的思路: 使用GetWindowRect可以获取图片控件的区域 使用cv::resizeWindow可以设置opencv窗口的大小,适合图片控件的大小 使用cvGetWindowHandle函数可以获取到ope…

30天入门Python(基础篇)——第3天:【变量】与【输出】与【转义符】(万字解析,建议收藏)

文章目录 专栏导读作者有话说&#xff1a;上一节课补充(Pychaem界面认识)①编写代码区域②运行代码&#xff08;多种方法&#xff0c;随便选一种&#xff0c;开心就好&#xff09; 什么是变量&#xff08;变量的定义&#xff09;①较标准的回答(引用AI)②大白话解释图文并茂(我…

嵌入式Linux驱动开发(I2C专题)(一)

一、I2C协议 1.1、硬件连接 I2C在硬件上的接法如下所示&#xff0c;主控芯片引出两条线SCL,SDA线&#xff0c;在一条I2C总线上可以接很多I2C设备。 1.2、IIC传输数据的格式 1.2.1、写操作 流程如下&#xff1a; 主芯片要发出一个start信号然后发出一个设备地址(用来确定是…

Java作业-模拟扎金花

要求 实现扑克牌的创建、洗牌、发牌、大小对比&#xff0c;输出赢家牌。 前提条件 首先需要创建三个集合&#xff0c;用于存储牌面值、牌号与比较规则&#xff0c;再创建一个类作为牌。 其次还需要了解到一个工具类&#xff0c;就是Collections类&#xff0c;该类的所有方法…

python,迪卡尔象限中画点

import numpy as np import matplotlib.pyplot as plt circleNum 30 # 同时圆刻度值 pointNum 20 # 点的数量 theta np.linspace(0.0, 2*np.pi, pointNum, endpointFalse) s circleNum * np.random.rand(pointNum) # plt.polar(theta, s, linestyleNone, marker*) # 无连接…

不知道有用没用的Api

encodeURIComponent(https://www.baidu.com/?name啊啊啊) decodeURIComponent(https%3A%2F%2Fwww.baidu.com%2F%3Fname%3D%E5%95%8A%E5%95%8A%E5%95%8A) encodeURI(https://www.baidu.com/?name啊啊啊) decodeURI(https://www.baidu.com/?name%E5%95%8A%E5%95%8A%E5%95%8A) …

​LeetCode解法汇总1222. 可以攻击国王的皇后

目录链接&#xff1a; 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目&#xff1a; https://github.com/September26/java-algorithms 原题链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 描述&#xff1a; 在一个 8x…

解决虚拟机重启后ifconfig看不到IP的问题

目录 背景 解决方案 背景 虚拟机&#xff0c;桥接模式&#xff0c;启动后一切正常&#xff0c;但重启后发现终端连不上虚机了&#xff0c;也ping不到&#xff0c;最后检查发现&#xff0c;IP消失了&#xff0c;虚机没有IP了。 解决方案 不论是否重启&#xff0c;只要是看不…

2023-09-14 LeetCode每日一题(可以攻击国王的皇后)

2023-09-14每日一题 一、题目编号 1222. 可以攻击国王的皇后二、题目链接 点击跳转到题目位置 三、题目描述 在一个 8x8 的棋盘上&#xff0c;放置着若干「黑皇后」和一个「白国王」。 给定一个由整数坐标组成的数组 queens &#xff0c;表示黑皇后的位置&#xff1b;以及…

关于浅克隆和深克隆入门理解

浅克隆:需要类实现Cloneable,并重写clone()方法 一般在重写clone()方法时,将返回值类型强转为自己类,避免每次克隆之后需要强转 public class Test {public static void main(String[] args) throws CloneNotSupportedException {A a1new A();A a2 a1.clone();//克隆之后 a1…

【搭建私人图床】本地PHP搭建简单Imagewheel云图床,在外远程访问

文章目录 1.前言2. Imagewheel网站搭建2.1. Imagewheel下载和安装2.2. Imagewheel网页测试2.3.cpolar的安装和注册 3.本地网页发布3.1.Cpolar临时数据隧道3.2.Cpolar稳定隧道&#xff08;云端设置&#xff09;3.3.Cpolar稳定隧道&#xff08;本地设置&#xff09; 4.公网访问测…

Linux——(第十章)进程管理

目录 一、概述 二、常用指令 1.ps查看当前系统进程状态 2.kill 终止进程 3.pstree 查看进程树 4.top 实时监控系统进程状态 5.netstat 监控网络状态 一、概述 &#xff08;1&#xff09;进程是正在执行的一个程序或命令&#xff0c;每一个进程都是一个运行的实体&#…

Redis 常用命令

目录 全局命令 1&#xff09;keys 2&#xff09;exists 3) del(delete) 4&#xff09;expire 5&#xff09;type SET命令 GET命令 MSET 和 MGET命令 其他SET命令 计数命令 redis-cli&#xff0c;进入redis 最核心的命令&#xff1a;我们这里只是先介绍 set 和 get 最简单的操作…

IP地址,子网掩码,默认网关,DNS讲解

IP地址&#xff1a;用来标识网络中一个个主机&#xff0c;IP有唯一性&#xff0c;即每台机器的IP在全世界是唯一的。 子网掩码&#xff1a;用来判断任意两台计算机的ip地址是否属于同一子网络的根据。最为简单的理解就是两台计算机各自的ip地址与子网掩码进行and运算后&#x…

常用排序算法

一、插入排序1、直接插入排序2、折半插入排序3、希尔排序 二、交换排序1、冒泡排序2、快速排序 三、选择排序1、简单选择排序2、堆排序&#xff08;1&#xff09;调整堆&#xff08;2&#xff09;创建堆 四、归并排序五、基数排序六、各种排序方法的比较 将一组杂乱无章的数据按…