【C++】手动实现队列的封装(C++)

news/2024/9/17 7:48:42/ 标签: c++, 算法, 开发语言, linux, qt

目录

 源代码:

输出结果如下: 


        实现以下封装

 源代码:

#include <iostream>using namespace std;class Queue
{
private:int* arr;         // 队列的动态数组int front;   // 队列头部元素的索引int rear;    // 队列尾部元素的索引int capacity;     // 队列的最大容量public://有参构造函数Queue(int size):front(0),rear(0),capacity(size){arr = new int[capacity];cout<<"有参构造函数"<<endl;}//析构函数~Queue(){delete[] arr;cout<<"析构函数"<<endl;}//赋值给容器适配器Queue &operator=(const Queue &brr);//访问第一个元素int _front();//访问最后一个元素int _back();//队列判空bool _empty();//返回容纳的元素数int _size();//向队尾插入元素void _push(int value);//删除首个元素void _pop();
};Queue &Queue::operator=(const Queue &brr)
{if(this != &brr){delete [] arr;         //释放掉原先队列中的内存front = brr.front;rear = brr.rear;capacity = brr.capacity;arr = new int[capacity];for(int i = 0; i < rear; i++){arr[i] = brr.arr[i];}}return *this;cout<<"拷贝成功"<<endl;
}int Queue::_front()
{return arr[front];
}int Queue::_back()
{if(_empty()){cout<<"队列为空"<<endl;return -1;}return arr[rear-1];
}bool Queue::_empty()
{return front == rear;
}int Queue::_size()
{return rear - front;
}void Queue::_push(int value)
{arr[rear++] = value;cout<<value<<"尾插成功"<<endl;
}void Queue::_pop()
{if(_empty()){cout<<"队列为空"<<endl;return ;}cout<<"首个元素"<<arr[front++]<<"删除成功\n"<<endl;
}int main()
{Queue q1(10);         //分配了10个内存空间q1._push(5);          //尾插5q1._push(2);          //尾插2q1._push(0);          //尾插0cout<<"最后一个元素是:"<<q1._back()<<endl;           //访问最后一个元素q1._pop();                    //删除首个元素5q1._pop();                    //再次删除首个元素,这里就是2了cout<<"此时第一个元素是:"<<q1._front()<<endl;                  //访问首个元素,就是0了return 0;
}

输出结果如下: 


http://www.ppmy.cn/news/1522200.html

相关文章

数据的表示-(反码,原码,补码,移码)

原码&#xff1a;最高位是符号位&#xff0c;其余低位表示数值的绝对值。 反码&#xff1a;整数的反码与原码相同&#xff0c;负数的反码是其绝对值按位取反&#xff0c;符号位不变 补码&#xff1a;整数的补码与原码相同&#xff0c;负数的补码是其反码末位加1. 移码&#xff…

c语言——用一维数组输出杨辉三角形

一.代码 #include <stdio.h> int Num[100]; int Hang; int Lie; int a; int Flag; int main() {Lie 1;Hang 1;a 0;while (1) {//列1为1if (Lie 1) {Num[1] 1;Lie;}//数据存到数组里面while (Hang > Lie && Hang ! 2) { if (Hang!Lie) {Flag Num[Lie] …

每日一题,力扣leetcode Hot100之238.除自身以外数组的乘积

乍一看这个题很简单&#xff0c;但是不能用除法&#xff0c;并且在O(N)时间复杂度完成或许有点难度。 考虑到不能用除法&#xff0c;如果我们要计算输出结果位置i的值&#xff0c;我们就要获取这个位置左边的乘积和右边的乘积&#xff0c;那么我新设立两个数组L和R。 对于L来…

c#如何实现触发另外一个文本框的回车事件

一.需求 我需要实现listview中的一行双击后&#xff0c;将其中的一个值传给一个文本框&#xff0c;传完后&#xff0c;给文本框一个回车指令。 我的方法&#xff1a;后面加上 \rthis.txt_ID.Text this.listView1.SelectedItems[0].Text"\r" 结果无效。 二.问通义…

vue3 自定义指令 directive

1、官方说明&#xff1a;https://cn.vuejs.org/guide/reusability/custom-directives 除了 Vue 内置的一系列指令 (比如 v-model 或 v-show) 之外&#xff0c;Vue 还允许你注册自定义的指令 (Custom Directives)。 我们已经介绍了两种在 Vue 中重用代码的方式&#xff1a;组件和…

坐牢第三十五天(c++)

一.作业 1.使用模版类自定义栈 代码&#xff1a; #include <iostream> using namespace std; template<typename T> // 封装一个栈 class stcak { private:T *data; //int max_size; // 最大容量int top; // 下标 public:// 无参构造函数stcak();// 有参…

使用亚马逊Bedrock的Stable Diffusion XL模型实现文本到图像生成:探索AI的无限创意

引言 什么是Amazon Bedrock&#xff1f; Amazon Bedrock是亚马逊云服务&#xff08;AWS&#xff09;推出的一项旗舰服务&#xff0c;旨在推动生成式人工智能&#xff08;AI&#xff09;在各行业的广泛应用。它的核心功能是提供由顶尖AI公司&#xff08;如AI21 Labs、Anthropic…

Haskell爬虫:连接管理与HTTP请求性能

爬虫技术作为数据抓取的重要手段&#xff0c;其效率和性能直接影响到数据获取的质量与速度。Haskell&#xff0c;作为一种纯函数式编程语言&#xff0c;以其强大的类型系统和并发处理能力&#xff0c;在构建高效爬虫方面展现出独特的优势。本文将探讨在Haskell中如何通过连接管…

美食|基于SpringBoot+vue的美食网站(源码+数据库+文档)

美食网站 基于SSMvue的美食网站 一、前言 二、系统设计 三、系统功能设计 系统功能实现 后台模块实现 管理员模块实现 用户模块实现 餐厅模块实现 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&…

深度学习从入门到精通——基于unet++算法实现细胞分割

模型定义 import torch from torch import nn__all__ [UNet, NestedUNet]class VGGBlock(nn.Module):def __init__(self, in_channels, middle_channels, out_channels):super().__init__()self.relu nn.ReLU(inplaceTrue)self.conv1 nn.Conv2d(in_channels, middle_channe…

如何创建训练数据集

在 HuggingFace 上创建数据集非常方便&#xff0c;创建完成之后&#xff0c;通过 API 可以方便的下载并使用数据集&#xff0c;在 Google Colab 上进行模型调优&#xff0c;下载数据集速度非常快&#xff0c;本文通过 Dataset 库创建一个简单的训练数据集。 首先安装数据集依赖…

黑马JavaWeb开发笔记14——Tomcat(介绍、安装与卸载、启动与关闭)、入门程序解析(起步依赖、SpringBoot父工程、内嵌Tomcat)

文章目录 前言一、Web服务器-Tomcat1. 简介1.1服务器概述1.2 Web服务器1.3 Tomcat 2. 基本使用2.1 下载2.2 安装与卸载2.3 启动与关闭2.4 常见问题 二、入门程序解析1. 起步依赖2. SpringBoot父工程3. 内嵌Tomcat 总结 前言 本篇文章是2023年最新黑马JavaWeb开发笔记14&#x…

高级java每日一道面试题-2024年9月03日-JVM篇-怎么判断对象是否可以被回收?

如果有遗漏,评论区告诉我进行补充 面试官: 怎么判断对象是否可以被回收? 我回答: 在Java中&#xff0c;判断一个对象是否可以被垃圾回收器&#xff08;Garbage Collector, GC&#xff09;回收&#xff0c;主要涉及到Java的内存管理和垃圾回收机制。Java采用自动内存管理机制…

【网络安全】IIS未授权访问敏感数据

未经许可,不得转载。 文章目录 正文攻击方法正文 IIS 是 Internet Information Services 的缩写,是微软开发的一个基于 Windows 的 Web 服务器。 HAProxy 是一个知名的高性能负载均衡器和代理服务器。它通常用于将流量分发到多个后端服务器,常与 Web 服务器(包括 IIS)一…

C# 特性与属性的区别

在 C# 中&#xff0c;"特性"&#xff08;Attribute&#xff09;和"属性"&#xff08;Property&#xff09;是两种不同的概念&#xff0c;它们在编程中扮演不同的角色&#xff1a; 属性&#xff08;Property&#xff09;&#xff1a; 属性是类或结构的一部分…

生成对抗网络在数字病理学中的应用综述|文献精析·24-09-03

小罗碎碎念 本期推文主题&#xff1a;生成对抗网络 今天这篇推文于2024年发表于《Mod Pathol》&#xff0c;目前IF7.1&#xff0c;属于医学和病理学的一区文章。 作者角色姓名单位名称&#xff08;中文&#xff09;第一作者Shahd A. Alajaji马里兰大学牙科学院口腔医学与诊断科…

硬刚苹果还得是华为

文&#xff5c;琥珀食酒社 作者 | 璇子 牛皮啊 华为发三折叠不意外 意外的是 这各种翻转简直颠覆想象 市面上没见过这么能“翻转”的&#xff1f; 要不怎么说硬刚苹果 还得看华为 就跟你同天怎么了&#xff1f; 拼创新、拼技术、拼热度 你就说哪比你差吧&#xff1f…

[建模已更新]2024数学建模国赛高教社杯A题:“板凳龙” 闹元宵 思路代码文章助攻手把手保姆级

本系列专栏将包括两大块内容 第一块赛前真题和模型教学,包括至少8次真题实战教学,每期教学专栏的最底部会提供完整的资料百度网盘包括:真题、数据、可复现代码以及文章. 第二块包括赛中详细思路建模、代码的参考助攻, 会提供2024年高教社国赛A的全套参考内容(一般36h内更新完毕…

孤儿进程、僵尸进程、守护进程(精灵进程)

目录 一、孤儿进程 二、僵尸进程 三、守护进程&#xff08;精灵进程&#xff09; 一、孤儿进程 定义&#xff1a;孤儿进程是指那些其父进程已经结束&#xff0c;但它们依然在运行的进程 创建一个孤儿进程&#xff1a; #include <stdio.h> #include <stdlib.h> #in…

dockerfile部署fastapi项目

dockerfile部署fastapi项目 1、Dockerfile # 使用Python官方镜像作为基础镜像 FROM python:3.8-slim# 更新apt-get源并安装依赖 # RUN apt-get update -y && apt-get install -y git# 设置环境变量 ENV PYTHONDONTWRITEBYTECODE 1 ENV PYTHONUNBUFFERED 1# 创建工作目…