import java.io.InputStreamReader;
import java.io.BufferedReader;
/**
*
Class CycQueueDemo
* Description 循环队列的基本算法
* Company opendata
*
Author Chenlly
* Date:08-12-06
* Version 1.0
*/
public class CycQueueDemo{
private static final int MAXSIZE=10;
private
int[] intArray;
private int nItems;//队列元素的个数
private int rear;
private
int front;
public CycQueueDemo(){
intArray=new
int[MAXSIZE];
nItems=0;
rear=-1;
front=0;
}
//
队尾插入
public void insert(int paraValue){
if(rear==MAXSIZE-1){//已
经到了队尾
rear=-1;
}
intArray[++rear]=paraValue;
nItems++;
}
//
队头删除
public int remove(){
int temp=intArray[front++];
if(front==MAXSIZE){
front=0;
}
nItems--;
return
temp;
}
//查看对头元素
public int peekFront(){
return
intArray[front];
}
//队列是否已满
public boolean isFull(){
return
MAXSIZE==nItems;
}
//队列元素个数
public int size(){
return nItems;
}
//从控制台输入数据
public int putDate(String
type){
boolean bflag=false;
int intValue=0;
if(type.equals("1")){
System.out.println("
请输入操作序列");
}else{
System.out.println("请入队数据");
}
while(!bflag){
try{
InputStreamReader
ir=new InputStreamReader(System.in);
BufferedReader br=new
BufferedReader(ir);
String str=br.readLine();
intValue=Integer.parseInt(str);
bflag=true;
}catch(NumberFormatException
ex){
ex.printStackTrace();
System.out.println("输入有误,请重新输
入");
}catch (Exception ex){
ex.printStackTrace();
}
}
return
intValue;
}
//主调函数
public static void main(String
[]args){
CycQueueDemo cd=new CycQueueDemo();
System.out.println("
请选择");
System.out.println("1:入列");
System.out.println("2:出列");
System.out.println("3:
查看队列头元素");
System.out.println("4:查看队列是否已满");
System.out.println("5:
查看队列元素个数");
System.out.println("6:退出操作");
while(true){
int
op=cd.putDate("1");
switch(op){
case 1:
int value=cd.putDate("2");
if(cd.isFull()){
System.out.println("队列已满,请出队列");
}else{
cd.insert(value);
}
break;
case
2:
if(cd.nItems==0){
System.out.println("队列
已空,请入队列");
}else{
int data=cd.remove();
System.out.println("出队列的元素为:"+data);
}
break;
case 3:
if(cd.nItems==0){
System.out.println("
队列已空,队列里已没有元素");
}else{
int
front=cd.peekFront();
System.out.println("队列顶元素为:"+front);
}
break;
case 4:
if(cd.isFull()){
System.out.println("队列已满");
}else{
System.out.println("队列未满");
}
break;
case
5:
if(cd.nItems!=0){
System.out.println("队列中有"+cd.nItems+"个元素");
}else{
System.out.println("队列中没有元素");
}
case 6:
default:
System.exit(0);
}
}
}
}
分享到:
相关推荐
通过上述分析,我们可以看到队列作为一种简单而高效的数据结构,在解决农夫过河这类搜索问题时发挥了重要作用。同时,位运算的巧妙应用不仅简化了代码,也提高了程序运行效率。虽然给出的程序还有一些可以改进的地方...
在编程领域,数据结构是构建高效算法的基础,而队列是一种基本且重要的数据结构。队列遵循“先进先出”(FIFO,First In First Out)原则,这意味着最先被添加到队列中的元素也将最先被处理。在C++中实现队列,我们...
在计算机科学中,数据结构是组织、存储和处理数据的方式,而队列是一种重要的线性数据结构。队列遵循“先进先出”(First In First Out, FIFO)的原则,类似于现实生活中的排队等待服务。在这个场景中,我们关注的是...
### 数据结构——队列实验报告知识点总结 #### 一、队列基础知识 - **队列定义**:队列是一种特殊的线性表,只允许在一端进行插入操作,在另一端进行删除操作。允许插入的一端称为队尾(rear),允许删除的一端称为...
链式队列是一种在计算机科学中广泛使用的数据结构,它以链表为基础,实现了队列“先进先出”(FIFO)的原则。在C++中实现链式队列,可以让我们更加灵活地处理数据,特别是在处理大量数据或者需要动态扩展容量的场景...
### 数据结构学习——队列与栈 ...通过以上介绍可以看出,队列和栈都是基础且重要的数据结构,在程序设计中有着不可替代的作用。理解它们的基本概念和实现方法,对于提高编程能力和解决实际问题具有重要意义。
数据结构在计算机科学中扮演着至关重要的角色,而链式队列作为一种常用的数据结构,它在处理大量数据的入队和出队操作时表现出高效性。本篇文章将深入探讨链式队列的实现,以及与之相关的编程概念和技术。 首先,...
队列是一种线性数据结构,它遵循先进先出...总结起来,队列作为一种基础数据结构,对于理解嵌入式系统的工作原理和优化系统性能具有重要意义。在实际编程中,正确地实现和使用队列操作能够有效提高系统的效率和稳定性。
Java基础复习笔记06数据结构-队列,详细介绍了队列的知识
本主题关注的是如何使用C语言来实现数据结构中的栈和队列,这是两种基础但非常重要的抽象数据类型(ADT)。 栈(Stack)是具有后进先出(LIFO)特性的数据结构。它类似于一个堆叠的盘子,最新的元素被放在顶部,...
顺序队列是数据结构中的一种基本类型,它的实现方式简单直观,适用于许多基础的算法和问题。在这个项目中,我们将深入探讨顺序队列的概念、实现以及在C语言中的应用。 顺序队列是一种线性数据结构,其元素在内存中...
队列(Queue)则是一种先进先出(First In First Out, FIFO)的数据结构,类似于排队等待服务的人群。新加入的元素总是在队尾,而服务完成的元素则从队头移除。队列主要的操作包括入队(Enqueue)和出队(Dequeue)...
队列是一种线性数据结构,遵循“先进先出”(First In First Out, FIFO)的原则,与现实生活中的排队等待类似。队列是编程中非常基础且重要的概念,广泛应用于操作系统、网络协议、任务调度等多个领域。 在VC6.0...
在本实验报告中,主题是关于数据结构中的特殊线性表——队列的...通过这个实验,学生可以深入理解数据结构中队列的概念,并能够实际编写和测试相关的数据结构算法,这对于后续的软件开发和算法分析有着重要的基础作用。
通过阅读《算法-理论基础- 队列- 循环队列(包含源程序).pdf》这份文档,你可以深入理解循环队列的原理,并通过源代码实践加深对这一数据结构的掌握。这份文档可能会涵盖循环队列的理论介绍、示例演示以及完整的C/...
### Java基础数据结构—队列 #### 一、队列的概念与特性 队列是一种特殊类型的线性表,它的特点是先进先出(FIFO,First In First Out)。我们可以将其想象成现实生活中的排队情景,比如排队购买火车票时,最早...
队列是数据结构中的一种,它的特点是先进先出(FIFO,First-In-First-Out)。队列的使用在程序设计中非常普遍,能够处理多种实际问题,例如在图形处理中进行广度优先搜索、实现优先队列、操作系统的工作调度等。 ...
数组是基础的数据结构,用于存储一组相同类型的元素。在队列实现中,数组可以用来存储待处理的事件,通过索引管理元素的入队和出队。 事件驱动编程的基本步骤包括: 1. **事件监听**:程序需要设置事件监听器,...
在计算机科学领域,队列是一种非常重要的数据结构,其遵循先进先出(FIFO)原则。队列可以使用数组或链表来实现,本篇文章主要介绍的是利用C++语言在VS2010环境下实现链队列的方法。链队列是一种基于链表实现的队列...