栈与队列之用java实现队列

队列

介绍:

队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。

队列的数据元素又称为队列元素。在队列中插入一个队列元素称为入队,从队列中删除一个队列元素成为出队。因为队列只允许在一段插入,在另一端删除,所以只有最早进入队列的元素才能最先从队列中删除,故队列又称为先进先出(FIFO-first in first out)线性表。

顺序队列中的溢出现象:

 

(1) "下溢"现象:当队列为空时,做出队运算产生的溢出现象。"下溢"是正常现象,常用作程序控制转移的条件。

(2)"真上溢"现象:当队列满时,做进栈运算产生空间溢出的现象。"真上溢"是一种出错状态,应设法避免。

(3)"假上溢"现象:由于入队和出队操作中,头尾指针只增加不减小,致使被删元素的空间永远无法重新利用。当队列中实际的元素个数远远小于向量空间的规模时,也可能由于尾指针已超越向量空间的上界而不能做入队操作。该现象称为"假上溢"现象。

用java代码实现:

package com.chenyu.zuo.stackAndQueue;public class QueueQ<T> {public int max;//队列的长度public T[] array;//队列实体public int rear;//队尾指针public int front;// 队头指针public int nItems;//元素的个数public QueueQ(int size){this.max=size;array=(T[])new Object[max];front=0;rear=-1;nItems=0;}public void insert(T t){  //插入队尾if(rear==max-1){ //已经实际队尾,从头开始rear=-1;}array[++rear]=t;nItems++;}public T delete(){//删除队头T t=array[front++];if(front==max){//队列到尾了front=0;}nItems--;return t;}public T peek(){ //查看对头return array[front];}public boolean IsEmpty(){ //是否为空return nItems==0;}public boolean isFull(){  //是否满了return nItems==max;}public int size(){ //队列的大小return nItems;}public  void showAll(){//打印出所有while(!IsEmpty()){System.out.println(delete());}}public static void main(String[] args) {QueueQ theQueue = new QueueQ(5);   // 队列有5个元素theQueue.insert(10);             // 添加4个元素theQueue.insert(20);theQueue.insert(30);theQueue.insert(40);theQueue.delete();               // 移除3个元素theQueue.delete();               // (10, 20, 30)theQueue.delete();theQueue.insert(50);             // 添加4个元素theQueue.insert(60);           theQueue.insert(70);theQueue.insert(80);theQueue.showAll();}
}
 

结果:

4050607080

 

 

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

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

相关文章

mysql去掉两个最高分_数据分析系列 16/32 | MySQL中子查询与联合查询

前面说了很多MySQL中的查询&#xff0c;比如条件查询、分组聚合查询、连接查询&#xff0c;今天来说一下另外两个非常的重要的查询&#xff0c;MySQL中的子查询和联合查询。PART01子查询子查询也称嵌套查询&#xff0c;是将一个查询语句嵌套在另一个查询语句的WHERE子句或者HAV…

centos 6.3安装libmcrypt-2.5.8不成功解决方案

明明安装成功好了&#xff0c;但是在安装mysql或者其他的mcrypt时就报错&#xff0c;说没有安装libmcrypt。。。 解决方法&#xff1a; ln -s /usr/local/lib/libmcrypt.la /usr/lib/libmcrypt.laln -s /usr/local/lib/libmcrypt.so /usr/lib/libmcrypt.soln -s /usr/local/lib…

[原] XAF How to implement a custom attribute to customize the Application Model

http://www.devexpress.com/Support/Center/Example/Details/E1679转载于:https://www.cnblogs.com/Tonyyang/p/3387234.html

简单聊下.NET6 Minimal API的使用方式

前言随着.Net6的发布&#xff0c;微软也改进了对之前ASP.NET Core构建方式&#xff0c;使用了新的Minimal API模式。之前默认的方式是需要在Startup中注册IOC和中间件相关&#xff0c;但是在Minimal API模式下你只需要简单的写几行代码就可以构建一个ASP.NET Core的Web应用&…

栈和队列之用java实现栈

介绍; 栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又…

那些不回你微信的人都在看什么?

如何成为一个“聊得开”的人&#xff1f;如何丰富空闲时光&#xff1f;如何在短时间内获取最最专业的文化、艺术资讯&#xff1f;小编给大家推荐几个公众号它们有趣有颜有料长按二维码&#xff0c;选择“识别图中二维码”关注印客美学id&#xff1a;inkbetter△长按二维码“识别…

按照学号查找学生_[源码和文档分享]基于JAVA和MYSQL数据库的学生成绩管理系统...

一、需求分析本系统是学生成绩管理系统&#xff0c;所以应该做到可以录入学生成绩&#xff0c;修改学生成绩&#xff0c;删除学生成绩&#xff0c;查询学生成绩&#xff0c;以及最后的所有学生按照GPA排名。本系统的数据来源期末考试成绩&#xff0c;用来实现录入&#xff0c;查…

NATS服务器部署及测试

版权声明&#xff1a;本文为博主chszs的原创文章&#xff0c;未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/51002444 NATS服务器部署及测试 作者&#xff1a;chszs&#xff0c;未经博主允许不得转载。经许可的转载需注明作者和博客主页&#xff1a;htt…

wdcp服务器/虚拟主机管理系统,wdcp服务器/虚拟主机管理系统1.1发布(最后更新20110423)...

wdcp服务器/虚拟主机管理系统1.1发布 (最后更新20110423,查看更新日志)wdcp (WDlinux Control Panel) 是一套用PHP开发的Linux服务器管理系统,旨在易于使用和管理Linux服务器,可以在线通过网页管理服务器和虚拟主机.简单,方便,易操作.只有Linux版本,没有windows版本,让你方便地…

Java开发者为最急需IT技术人才

美国在线招聘网站Dice发布的月度IT技能需求报告显示&#xff0c;Java开发者、移动开发者和.Net开发者是目前最急需的IT职位&#xff0c;软件开发者排名第四。 Dice表示&#xff0c;在人才市场上&#xff0c;招聘经理提到这些职位的频率是其他职位的2到3倍。目前美国科技行业共有…

如何修改 asp.net core 5 程序的默认端口号?

咨询区 ja73在本地开发环境下&#xff0c;我知道可以通过修改 launchSettings.json 文件中的端口号来实现端口切换。"WebApplication1": {"commandName": "Project","launchBrowser": true,"launchUrl": "weatherforec…

Spring AOP 本质

AOP本质是拦截&#xff0c;拦截的本质是代理&#xff0c;代理分动态和静态&#xff0c;静态代理很简单&#xff0c;功能有限&#xff0c;应用不是很广泛&#xff0c;Spring中主要用的动态代理。用Spring做开发&#xff0c;AOP的实现仅仅是编程实现一些接口&#xff0c;然后配置…

颜宁问4对科研夫妻:男科学家怎样平衡事业家庭?

全世界只有3.14 % 的人关注了爆炸吧知识本文来源&#xff1a;科学网网上很多人一说到我&#xff0c;就说颜宁之所以能成功&#xff0c;因为她是单身&#xff0c;没有家庭拖累。但事实上&#xff0c;有家庭、有事业才是绝大多数人的现状。我们这次请来四对科研伉俪&#xff0c;不…

数据库 流量切分_互联网大厂有哪些分库分表的思路和技巧?

写在前面冰河曾经经历过一个完整电商系统用户从零到上亿的研发过程&#xff0c;在业务的不断发展与变化过程中&#xff0c;演化出电商系统和基于大数据的商品精准实时推荐平台&#xff0c;关于MySQL数据库的架构演进&#xff0c;小伙伴们可以参考《从零到千万用户&#xff0c;我…

feign和ajax,SpringCloud-feign 声明式服务调用

以前学习java&#xff0c;一般就一个后端&#xff0c;都要学习如何在容器中运行&#xff0c;如tomcat&#xff0c;weblogic&#xff0c;现在微服务颠覆了这一切&#xff0c;一个系统要被拆分成多个服务&#xff0c;服务与服务间需要通信&#xff0c;让我想到了前端的ajax&#…

WebService学习笔记---CXF入门

2019独角兽企业重金招聘Python工程师标准>>> 一、准备 软件环境&#xff1a; JDK1.8, Eclipse JEE 4.4, Maven-3.2.5, Spring-4, CXF-3.1.5 二、创建项目 新建一个Maven项目&#xff0c;在pom.xml里添加spring依赖<dependencyManagement><dependencies>…

提供程序未返回 ProviderManifestToken 字符串

我这是在学习MVC3.0时出现的错误&#xff0c;其实呢这个问题主要是因为web.config配置文件访问数据库的时候连接出错造成的 <connectionStrings> <add name"ApplicationServices" connectionString"data source.\SQLEXPRESS;Integrated Sec…

.NET 6新特性试用 | ArgumentNullException卫语句

前言在前面的文章中&#xff08;《可空引用类型》&#xff09;&#xff0c;我们介绍过编译器会帮我们检查空引用&#xff0c;但是仅仅是警告。最好的方式还是在运行时用卫语句进行检查&#xff1a;private void Test(WeatherForecast weatherForecast) {if (weatherForecast n…

JSP之EL表达式详细介绍

一、JSP EL语言定义 E L&#xff08;Expression Language&#xff09; 目的&#xff1a;为了使 JSP写起来更加简单。 表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言&#xff0c;它提供了在 JSP 中简化表达式的方法。它是一种简单的语言&#xff0c;基于可用的命名空…

那一年,爱因斯坦输得很惨很惨,被十几个诺奖得主怼了一遍后,退出了群聊……...

全世界只有3.14 % 的人关注了爆炸吧知识科学家撕逼原来这么刺激“遇事不决&#xff0c;量子力学”&#xff0c;作为长期在民间被调侃的学科&#xff0c;量子力学的名声不小&#xff0c;但它究竟有多重要&#xff0c;又是怎么来的&#xff0c;却少有人了解。而说到量子力学&…