2024.9.3 作业

自己实现栈和队列

代码:

/*******************************************/

文件名:sq.h

/*******************************************/

#ifndef SQ_H
#define SQ_H
#include <iostream>
#include<cstring>using namespace std;
class Mystack
{
private:char *data;size_t size=0;size_t cap=10;void resize(){size_t newcap=2*cap;char *newdata=new char[newcap];for(size_t i=0;i<size;i++){newdata[i]=data[i];}delete[]data;data=newdata;cap=newcap;}
public:Mystack():size(0),cap(10){data=new char[cap];}~Mystack(){delete[]data;}Mystack &operator=(const Mystack &other);char top();bool empty()const;size_t getsize()const;void push(const char &value);void pop();void show();
};class Myqueue
{
private:char *data;int frontIndex; // 队列头部的索引int rearIndex;  // 队列尾部的索引int capacity;   // 队列的容量int count;      // 队列中当前元素的数量void resize() {char* newData = new char[capacity * 2];int i = 0;for (int j = frontIndex; i < count; j = (j + 1) % capacity, ++i) {newData[i] = data[j];}delete[] data;data = newData;frontIndex = 0;rearIndex = count;capacity *= 2;}
public:Myqueue():frontIndex(0),rearIndex(0),capacity(10),count(0){data = new char[capacity];}~Myqueue(){delete[] data;}Myqueue &operator=(const Myqueue &other);char &front();char &back();bool empty()const;size_t size()const;void push(const char &value);void pop();void show();
};#endif // SQ_H

/*******************************************/

文件名:sq.cpp

/*******************************************/

#include"sq.h"
Mystack &Mystack::operator=(const Mystack &other)
{delete[] data;size = other.size;cap = other.cap;data = new char[cap];for (size_t i = 0; i < size; ++i) {data[i] = other.data[i];}return *this;
}
char Mystack::top()
{return data[size-1];
}
bool Mystack::empty()const
{return size==0;
}
size_t Mystack::getsize()const
{return cap;
}
void Mystack::push(const char &value)
{if (size == cap){resize();}data[size++] = value;
}
void Mystack::pop()
{data[size--]=0;
}
void Mystack::show()
{for(size_t i=0;i<size;i++){cout<<data[i];}cout<<endl;
}Myqueue &Myqueue::operator=(const Myqueue &other)
{delete[] data;count = other.count;capacity = other.capacity;data = new char[capacity];for (int i = 0; i < count; ++i) {data[i] = other.data[i];}return *this;
}
char &Myqueue::front()
{return data[frontIndex];
}
char &Myqueue::back()
{return data[(rearIndex - 1 + capacity) % capacity];
}
bool Myqueue::empty()const
{return count == 0;
}
size_t Myqueue::size()const
{return count;
}
void Myqueue::push(const char &value)
{if (count == capacity) {resize();}data[rearIndex] = value;rearIndex = (rearIndex + 1) % capacity;++count;
}
void Myqueue::pop()
{frontIndex = (frontIndex + 1) % capacity;--count;
}
void Myqueue::show()
{for(int i=0;i<count;i++){cout<<data[i];}cout<<endl;
}

/*******************************************/

文件名:main.cpp

/*******************************************/

#include"sq.h"int main()
{Mystack s1;s1.push('a');s1.push('a');s1.push('a');s1.push('a');s1.push('a');cout<<s1.top()<<endl;cout<<s1.getsize()<<endl;s1.show();Mystack s2;s2=s1;s2.show();s2.pop();s2.show();Myqueue q1;q1.push('b');q1.push('b');q1.push('b');q1.push('b');q1.push('c');cout<<q1.front()<<endl;cout<<q1.back()<<endl;cout<<q1.size()<<endl;q1.show();Myqueue q2;q2=q1;q2.show();q2.pop();q2.show();return 0;
}

结果:

思维导图:

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

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

相关文章

秋招突击——算法练习——8/26——图论——200-岛屿数量、994-腐烂的橘子、207-课程表、208-实现Trie

文章目录 引言正文200-岛屿数量个人实现 994、腐烂的橘子个人实现参考实现 207、课程表个人实现参考实现 208、实现Trie前缀树个人实现参考实现 总结 引言 正文 200-岛屿数量 题目链接 个人实现 我靠&#xff0c;这道题居然是腾讯一面的类似题&#xff0c;那道题是计算最…

[数据集][目标检测]智慧牧场猪只检测数据集VOC+YOLO格式16245张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;16245 标注数量(xml文件个数)&#xff1a;16245 标注数量(txt文件个数)&#xff1a;16245 标…

vue使用html2Canvas导出图片 input文字向上偏移

vue使用html2Canvas导出图片 input文字向上偏移 图中 用的是element的输入框 行高 32px,经常测试 你使用原生的input 还是会出现偏移。 解决方法&#xff1a;修改css样式 1.怎么实现导出 网上随便找很多 2.在第一步 获取你要导出的元素id 克隆后 修改他的样式或者 你直接在你需…

基于单片机的水箱水质监测系统设计

本设计基于STM32F103C8T6为核心控制器设计了水质监测系统&#xff0c;选用DS18B20温度传感器对水箱水体温度进行采集&#xff1b;E-201-C PH传感器获取水体PH值&#xff1b;选用TS-300B浊度传感器检测水体浊度&#xff1b;采用YW01液位传感器获取水位&#xff0c;当检测水位低于…

宽带和带宽分不清楚

如何理解带宽 我们平时经常听到的带宽其实是宽带&#xff0c;举个栗子&#xff1a;我家用的是xx运营商提供的&#xff0c;号称1000M宽带&#xff0c;这其实指是的网络数据传输的速率是&#xff1a;1000Mbs&#xff08;即125MBps&#xff09;。 那么既然有宽带&#xff0c;就有…

MCU官方IDE软件安装及学习教程集合 — STM32CubeIDE(STM32)

简介 各MCU厂商为保证产品的市场地位以及用户体验&#xff0c;不断的完善自己的产品配套&#xff0c;搭建自己的开发生态&#xff0c;像国外ST公司&#xff0c;国内的GD&#xff08;兆易创新&#xff09;&#xff0c;AT&#xff08;雅特力&#xff09;等等。目前就开发生态而言…

09.定时器02

#include "reg52.h"sbit led P3^6;void delay10ms() { //1. 配置定时器0工作模式位16位计时TMOD 0x01;//2. 给初值&#xff0c;定一个10ms出来TL00x00;TH00xDC;//3. 开始计时TR0 1;TF0 0; } void main() {int cnt 0;led 1;while(1){if(TF0 1)//当爆表的时候&a…

【Qt】QLCDNumber | QProgressBar | QCalendarWidget

文章目录 QLCDNumber —— 显示数字QLCDNumber 的属性QLCDNumber 的使用 QProgressBar —— 进度条QProgressBar 的属性创建一个进度条修改为 红色的进度条 QCalendarWidget —— 日历QCalendarWidget 的属性QCalendarWidget 的使用 QLCDNumber —— 显示数字 QLCDNumber 的属…

UE4_后期处理_后期处理材质及后期处理体积一

后期处理效果 在渲染之前应用于整个渲染场景的效果。 后期处理效果&#xff08;Post-processing effect&#xff09;使美术师和设计师能够对影响颜色、色调映射、光照的属性和功能进行组合选择&#xff0c;从而定义场景的整体外观。要访问这些功能&#xff0c;可以将一种称为…

多角度解读WMS:探寻仓库管理系统的核心功能

多角度解读 WMS 仓库管理系统 1. 概述 WMS 在数字化工厂中具有举足轻重的地位&#xff0c;它不仅提高了仓储管理的效率与准确性&#xff0c;还能优化整个供应链的管理&#xff0c;支持灵活生产模式&#xff0c;并提供决策支持的关键数据。通过现代前后端技术的架构设计&#xf…

【Spring Boot 3】自定义拦截器

【Spring Boot 3】自定义拦截器 背景介绍开发环境开发步骤及源码工程目录结构总结背景 软件开发是一门实践性科学,对大多数人来说,学习一种新技术不是一开始就去深究其原理,而是先从做出一个可工作的DEMO入手。但在我个人学习和工作经历中,每次学习新技术总是要花费或多或…

Prometheus_0基础_学习笔记

一、基本概念 Prometheus是由golang语言开发的一套开源的监控、报警、时间序列数据库的组合&#xff0c;是一款基于时序数据库的开源监控告警系统。 时间序列数据库&#xff1a;时间序列数据库&#xff08;Time Serires Database , TSDB&#xff09;不同于传统的关系型数据库。…

idea如何高亮、标记代码颜色的2种方式

zihao 第一种高亮方式 ctrlf 双击选择执行快捷键&#xff0c;所有被搜索的单词都会被搜索且高亮 第二种高亮方式 安装grep console 日志管理插件 ctrlaltf3 双击选择执行快捷键&#xff0c;所有被标记一个颜色高亮

银行卡二三四要素验证-银行卡二三四要素验证接口-银行卡二三四要素验证api

1、接口介绍 银行卡二三四要素验证接口是一种用于验证用户银行卡信息真实性和有效性的技术接口。这种接口在金融、电商等领域有着广泛的应用&#xff0c;旨在确保交易的安全性和合规性。 2、接口地址 全面覆盖&#xff0c;支持所有带银联标识的银行卡; 高准确性-验证结果实时返…

科技型中小企业怎么做

在当今快速发展的科技时代&#xff0c;科技型中小企业扮演着越来越重要的角色。这些企业不仅推动了技术创新&#xff0c;还为经济增长和社会进步做出了巨大贡献。那么&#xff0c;科技型中小企业应如何制定并执行其发展战略呢&#xff1f; 1. 明确定位与战略规划 对于任何企业…

云服务器+docker:还在为项目上线苦恼?一文包你解决(保姆级教程,图文并茂,万字起步!!!)

目录 Blue留言机&#xff1a; 学习视频以及参考资料 &#xff1a; 1、学习之前的必备操作&#xff1a; 第一步&#xff1a;购买服务器 选择一台免费的云服务器&#xff08;包白嫖的&#xff09; 配置服务器的一点说明&#xff1a; 查看自己是否购买成功&#xff1a; 第…

docker制作达梦数据库驱动的Python镜像记录

docker制作达梦数据库驱动的Python镜像记录 使用Sqlalchemy ORM 操作达梦 提供构建好的docker镜像 docker pull chongjing001/python:3.12 使用虚拟环境(source /venv/bin/activate) 后pip其他库 镜像中安装Python参考上一篇 下载DM8安装包 版本选择 官网 Linux安装包只有 r…

Python基础笔记

一、python基础1.1 基础知识1.1.1 注释 注释&#xff1a;在程序中对程序代码进行解释说明的文字。 作用&#xff1a;注释不是程序&#xff0c;不能被执行&#xff0c;只是对程序代码进行解释说明&#xff0c;让别人可以看懂程序代码的作用&#xff0c;能够大大增强程序的可读性…

基于yolov8的红绿灯目标检测训练与Streamlit部署(代码+教程)

项目背景 随着智能交通系统的快速发展&#xff0c;自动驾驶技术逐渐成为研究的热点。在自动驾驶领域中&#xff0c;准确识别道路上的交通信号灯是确保车辆安全行驶的关键技术之一。近年来&#xff0c;深度学习技术的发展为交通信号灯的识别提供了强大的支持。YOLO&#xff08;…

集成电路学习:什么是I/O输入输出

I/O&#xff1a;输入输出 I/O&#xff0c;全称Input/Output&#xff0c;即输入输出&#xff0c;是信息处理系统&#xff08;如计算机&#xff09;与外部世界&#xff08;可能是人类或另一信息处理系统&#xff09;之间的通信方式。具体来说&#xff0c;输入是系统接收的信号或数…