2024.9.3 作业

news/2024/9/19 4:52:08/ 标签: c++, 算法, 前端

自己实现栈和队列

代码:

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

文件名: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.ppmy.cn/news/1520884.html

相关文章

电路分析 ---- 电平移位电路

1 电平移位电路 如图所示的电平移位电路&#xff0c;用于ADC的前级驱动&#xff0c;它将一个变化范围为-10V ~ 10V的输入信号&#xff0c;线性变化成0.048V ~ 4.048V的信号&#xff0c;以满足ADC的输入范围要求。 2 电路说明 V R E F V_{REF} VREF​为电压基准源&#xff0c…

【 WPF 中常用的Brush类的简要介绍、使用方法和适用场景】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 WPF 中常用的 Brush 类的简要介绍、使用方法和适用场景 使用场景解释示例代码&#xff08;为按钮创建一个线性渐变背景&#xff09; Brush 类描述使用示例适用场景SolidColor…

oracle 数据库 day0823

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

信息打点day.06

一、知识点 1、黑盒测试 黑盒测试是一种评估网络安全性的方法&#xff0c;它模拟了攻击者在不了解系统内部结构和工作机制的情况下&#xff0c;仅通过外部接口&#xff08;如网络协议、应用程序界面等&#xff09;尝试渗透、攻击或绕过安全控制的行为。通过模拟真实的攻击场景…

【JS】如何给fetch添加超时功能

前言 Ajax有两种方式实现请求&#xff0c;分别是xhr和fetch&#xff0c;前者有超时功能&#xff0c;fetch则不然。下文尝试给fetch添加超时功能。 实现 使用终止器&#xff0c;在controller.abort()时便会在使用其signal信号的fetch函数发送一个终止信号&#xff0c;请求就会…

数学建模强化宝典(11)时间预测模型

前言 时间预测模型&#xff0c;即时间序列预测模型&#xff0c;是一类专门用于分析和预测时间序列数据的模型。时间序列数据是指将某一变量在不同时间点的观测值按时间先后顺序排列而成的序列。这类模型在金融、经济、气象、工业控制等多个领域都有广泛的应用。以下是一些常见的…

网络优化:提升MySQL数据恢复效率的策略

在当今的信息技术环境中&#xff0c;数据恢复是确保企业数据安全和业务连续性的关键环节。特别是在网络密集型的环境中&#xff0c;数据恢复的网络优化对于提升恢复速度和效率至关重要。本文将深入探讨如何在MySQL中实现数据恢复的网络优化&#xff0c;包括网络基础设施的优化、…

Unity 贴图拷贝与性能对比

Cooooopy &#x1f333;GetPixels&#x1f333;GetRawTextureData&#x1f333;RenderTexture&#x1f333;Graphics.CopyTexture&#x1f32d;性能对比 &#x1f333;GetPixels var pixels tex.GetPixels();tex2.SetPixels(pixels);tex2.Apply();&#x1f333;GetRawTextureD…

C#中的控件和组件

在 C# 中&#xff0c;特别是在 Windows Forms 应用程序中&#xff0c;控件&#xff08;Controls&#xff09;和组件&#xff08;Components&#xff09;是构建用户界面和提供功能的基础元素。它们都是 System.Windows.Forms 命名空间下的对象&#xff0c;但它们之间存在一些区别…

录屏软件哪个好用免费无水印?微课录课软件推荐 屏幕录制工具app下载

随着在线教学、远程办公和自媒体创作的兴起&#xff0c;电脑录屏软件逐渐成为了许多用户的必备工具。市面上的录屏软件琳琅满目&#xff0c;但真正既好用又免费的却并不多见。今天为大家推荐几款好用的录屏软件&#xff0c;而且这些软件大多都是免费下载使用。赶快看看有没有你…

S-Clustr(影子集群) Simple SCC伪代码编译器,工业控制DSL结构语言,递归函数调用

项目地址:https://github.com/MartinxMax/S-Clustr/releases 200 S-Clustr Simple DSL 语法 内置函数示例RUN(启动设备)RUN:<ID>STOP(停止设备)STOP:<ID>TIME(MS延时)TIME:<Delay/Ms> 函数示例DEF(定义函数名,空形参)DEF Function:DEF(函数名,带形参)DEF …

《Zookeeper 的监听机制及原理解析》

一、引言 在分布式系统中&#xff0c;协调和管理各个节点的状态是一项至关重要的任务。ZooKeeper 作为一个开源的分布式协调服务&#xff0c;被广泛应用于众多分布式系统中&#xff0c;如 Hadoop、HBase、Kafka 等。其中&#xff0c;ZooKeeper 的监听机制是其实现分布式协调的关…

828华为云征文|华为云Flexus X实例docker部署srs6并调优,协议使用webrtc与rtmp

828华为云征文&#xff5c;华为云Flexus X实例docker部署srs6并调优&#xff0c;协议使用webrtc与rtmp 华为云最近正在举办828 B2B企业节&#xff0c;Flexus X实例的促销力度非常大&#xff0c;特别适合那些对算力性能有高要求的小伙伴。如果你有自建MySQL、Redis、Nginx等服务…

4.Copy Constructor的构造操作

目录 1、对象赋值问题引入 2、Bitwise Copy Semantics&#xff08;位逐次拷贝&#xff09; 3、处理class virtual function 4、处理virtual base class subobject 1、对象赋值问题引入 在C中&#xff0c;有三种情况会以一个object的内容作为另一个class object的初值。这三…

ubuntu任何版本 卡死 解决办法

首先&#xff0c;我们一定要记得ubuntu一定不要强制关机&#xff0c;一定&#xff0c;一定 因为90% 的可能你的电脑从此就会黑屏开不了机了&#xff0c;然后你就可以按照我的方法去卸载&#xff0c;重装ubuntu系统了。/(ㄒoㄒ)/~~ &#xff08;如果能解决您的问题&#xff0c…

go语言的闭包

闭包其实是匿名函数&#xff0c;不过与一般匿名函数不同&#xff0c;它要引用外部变量。 package main import "fmt"func getSum() func(int)(int){var sum int 0return func(x int) int{sum xreturn sum} } func main(){f : getSum()fmt.Println(f(1))fmt.Printl…

谷粒商城实战笔记-285~290-分布式事务

文章目录 一&#xff0c;285、商城业务-分布式事务-分布式CAP&Raft原理1&#xff0c;CAP简介2&#xff0c;三种常见的组合2.1 CA 模型 - 一致性 可用性2.2 CP 模型 - 一致性 分区容忍性2.3 AP 模型 - 可用性 分区容忍性 3&#xff0c;CAP最小必要知识4&#xff0c;Raft算…

Qt中的各种“q+基本数据类型“

前言 虽说Qt支持C的数据类型&#xff0c;但是还是用Qt自己又封装的数据类型比较好。你在支持能有我原生的支持&#xff1f; 正文 先看qint系列 有qint8,quint8,qint16,quint16,qint32,quint32,qint64,quint64 源码如下 解读 1. typedef signed char qint8; 说明: 定义…

【GPT】Coze使用开放平台接口-【6】Dify 也来一遍

前面讲了 coze 的相关用法&#xff0c;这边想着用 Dify 也来一遍&#xff0c;刚开始的时候接触的是 Dify&#xff0c;后面才是 coze。Dify 和 coze 的侧重点不同&#xff0c;我个人是更倾向用 Dify 构建工作流就可以了&#xff0c;coze 还是相对全能。 本节用 Dify 也会创建插…

MATLAB 计算凹凸多边形的面积(85)

MATLAB 计算凹凸多边形的面积(84) 一、算法介绍二、算法实现1.代码一、算法介绍 计算凹凸多边形的面积,并输出计算结果,可视化 二、算法实现 1.代码 % 设置多边形的顶点坐标 % 这里以一个五边形为例 x = [1, 3, 4