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.rhkb.cn/news/416300.html

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

相关文章

Matlab R2022b使用Camera Calibrator工具箱张正友标定法进行相机标定附带标定前后对比代码

打开Camera Calibrator 在这添加你拍摄的图片 根据你每个方块的实际边长填写&#xff0c;我是15mm。 通俗一点&#xff0c;要k3就选3 Coefficients&#xff0c;否则为0&#xff1b;要p1、p2就选Tangential Distortion。然后进行计算。 可以点击右侧误差高的选中图像进行移…

【C/C++】C语言实现蛇形矩阵

目录 题目描述输入描述:输出描述:示例思路代码 题目描述 给你一个整数n&#xff0c;输出n∗n的蛇形矩阵。 输入描述: 输入一行&#xff0c;包含一个整数n 输出描述: 输出n行&#xff0c;每行包含n个正整数&#xff0c;通过空格分隔。 1<n<1000 示例 输入 4输出 …

iOS18 beta版本怎么回退至iOS17正式版本?

截止目前&#xff0c;苹果最近的iOS18的beta测试版本已经发了8版了&#xff0c;有许多朋友们都已升级提前尝鲜了&#xff0c;升级体验后许多果粉朋友们觉得有许多功能还是不够稳定&#xff0c;有些许bug&#xff0c;就想要降级&#xff0c;回退到iOS17的正式版&#xff0c;但又…

2024数博会技术成果回顾 | KPaaS助力企业数智化转型

2024年8月28日至30日&#xff0c;中国国际大数据产业博览会&#xff08;简称“数博会”&#xff09;在贵州省贵阳市隆重举行。本届数博会以“数智共生&#xff1a;开创数字经济高质量发展新未来”为主题&#xff0c;吸引了来自全球各地的400多家企业和2.1万余名嘉宾参与&#x…

AI自动生成PPT哪个软件好?如何自动生成专业级PPT?

新学期伊始&#xff0c;准备开学演讲稿的你是否还在为制作PPT而烦恼&#xff1f;别担心&#xff0c;现在有了AI的帮助&#xff0c;生成专业且吸引人的PPT变得轻而易举。 本文将为你揭秘4种高效的AI自动生成PPT的方法&#xff0c;让你在新学期的演讲中脱颖而出。无论是简洁明了…

Python | Leetcode Python题解之第391题完美矩形

题目&#xff1a; 题解&#xff1a; class Solution:def isRectangleCover(self, rectangles: List[List[int]]) -> bool:area, minX, minY, maxX, maxY 0, rectangles[0][0], rectangles[0][1], rectangles[0][2], rectangles[0][3]cnt defaultdict(int)for rect in rec…

glsl着色器学习 (十二)平移

平移和旋转、缩放是一样的&#xff0c;替换成平移矩阵即可&#xff1b; // 创建一个单位矩阵 const translateYMatrix mat4.create();// 沿着Y轴向下平移1个单位 mat4.fromTranslation(translateYMatrix, [0, -1, 0]);// 设置矩阵 gl.uniformMatrix4fv(matrixUniformLocation…

Linux进程状态 僵尸进程 孤儿进程

进程状态 R (running) Linux 的运行状态(循环空语句) S (sleeping) 阻塞状态 称为浅度睡眠(可以被唤醒)死循环打印语句时等待输入时使用 sleep 函数时 D (disk sleep) 也是一种阻塞状态&#xff0c;称为深度睡眠进程在等待磁盘写入完毕期间&#xff0c;这个进程不能被任何人杀…

2157. 优秀的拆分(power)

代码 #include<bits/stdc.h> using namespace std; int a[10001]; int main() {int n,t1,k0;bool flagfalse;cin>>n;if(n%21) {cout<<-1;return 0;}while(n>0){if(n%21){k;a[k]t; }nn/2;tt*2;}if(k>1) {flagtrue;for(int ik;i>1;i--)cout<&l…

oracle 数据库 day0823

ok了家人们&#xff0c;今天学习了orcle的基本用法&#xff0c;一日不见&#xff0c;如隔三秋啊&#xff0c; 一.多表联合查询 和之前学习的MySQL数据库一样的用法&#xff0c; 1.1 笛卡尔积查询 SELECT * FROM A表,B表 查询员工表和部门表 select * from emp e, dept d; e…

跨平台RTSP播放器之VLC Media Player还是SmartPlayer?

好多开发者纠结&#xff0c;RTSP流播放&#xff0c;到底是用开源的VLC Media Player还是大牛直播SDK的SmartPlayer&#xff1f;针对此&#xff0c;本文做个简单的技术探讨&#xff0c;方便开发者根据实际需要&#xff0c;做适合自己场景的选择&#xff1a; VLC Media Player …

flunet瞬态处理时均问题

fluent处理时均问题 最近遇到个同学&#xff0c;处理心脏跳动的时均问题&#xff0c;由于仅想取部分稳定时间段的时均数据&#xff0c;fluent的自动采样仅能对全部时间做处理&#xff0c;就存在问题了&#xff0c;网上看到两篇很详细的文章&#xff0c;记录下。 具体网址&…

截取pdf中的部分内容,又保证内容不失真,实现方式

文章目录 0.为什么需要截取pdf1.访问网站2.上传你需要截取的pdf文件3.选取区域下载 0.为什么需要截取pdf 如果直接截图工具截图的话&#xff0c;里面的文字和图片内容会出现失真的情况&#xff0c;但是我们希望pdf空白部分的内容不要&#xff0c;这个时候就需要截取pdf工具 1…

企业内部社区在企业起到什么作用?

企业内部社区是传播企业文化、促进员工互动和提升员工参与度的重要平台。通过企业内部社区&#xff0c;员工可以更好地理解和认同企业的核心价值观和文化理念&#xff0c;增强凝聚力和团队合作精神&#xff0c;进而提升企业的绩效和竞争力。企业内部社区有助于营造积极向上的工…

JVM学习《类加载运行-jvm内存模型》

目录 1.类加载过程 1.1 加载过程详解 1.2 类加载器 2.类加载器和双亲委派机制 3.JVM 对象创建与内存分配机制&#xff08;重要&#xff09; 3.1 对象的创建过程 3.2 对象的内存分配策略 4.JVM的内存模型 5.那些是GC Roots的对象有哪些&#xff1f; 1.类加载过程 通过类…

nacos适配人大金仓以及达梦-2.41

不想折腾直接查看源码 里面打包好了发行版本能直接使用 想折腾的具体看

白酒酿造:传统工艺与现代科技的整合

在千年的历史长河中&#xff0c;白酒酿造技艺如一颗璀璨的明珠&#xff0c;闪烁着中华文明的智慧光芒。如今&#xff0c;随着科技的飞速发展&#xff0c;传统酿造工艺与现代科技在这片古老的土地上交织碰撞&#xff0c;共同书写着白酒酿造的新篇章。豪迈白酒&#xff08;HOMANL…

分析源码学习c++(srs中http客户端)

文章目录 背景基础知识c标准库虚函数虚函数使用方法 虚析构函数 HTTP客户端使用方法TCP传输层分析使用方法结构分析连接函数读写函数 协议层分析初始化函数发送请求响应数据解析 背景 通过阅读源码&#xff0c;编写分析笔记来学习C是一种非常有效且深入的方法&#xff0c;能帮助…

Java导入包com.alibaba.fastjson2.JSONObject

com.alibaba.fastjson2.JSONObject 是阿里巴巴的 fastjson 库中的一个类&#xff0c;用于处理 JSON 数据。 这里提供一些常见的使用示例和可能的问题解决方法。 解决方案和示例代码: 创建 JSONObject 对象: import com.alibaba.fastjson2.JSONObject;JSONObject jsonObject …

Nginx: 使用KeepAlived配置实现虚IP在多服务器节点漂移及Nginx高可用原理

使用KeepAlived配置实现虚IP在多服务器节点漂移 1 &#xff09;环境准备 2台 linux , 一主一备 节点1&#xff1a;192.168.184.30 CentOS 7 Master节点2&#xff1a;192.168.184.40 CentOS 7 BackupVIP 192.168.184.50 安装 KeepAlived, $ yum install keepalived 注意&#x…