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);
}
}
}
}
分享到:
相关推荐
计算机软件基础:12第四章数据结构栈-队列.doc
java基础笔记数据结构-队列,详细描述了队列的原理及其实现方式,基础数据结构。
C语言-数据结构-栈队列实现
Java基础复习笔记06数据结构-队列~~~~~~~
队列类模板,成员函数注释清晰明了,可实现不同数据类型队列。考试、求职笔试必备基础。
PPT内容是数据结构中有关栈和队列的知识,非常适合正在学习数据结构基础的同学
基本操作:针对每种数据结构,定义了一系列基本的操作,包括但不限于插入、删除、查找、更新、遍历等,并分析这些操作的时间复杂度和空间复杂度。 算法: 算法设计:研究如何将解决问题的步骤形式化为一系列指令,...
。
。
3、实现循环队列的各种基本运算的算法,并在此基础上设计一个主程序完成如下功能: ①初始化队列; ②判断队列是否非空; ③依次进队各元素; ④出队一个元素,输出该元素; ⑤输出队列的元素个数; ⑥输出出...
计算机软件基础:12第四章数据结构栈_队列
(2) 熟悉队列的特点(先进先出)及队列的基本操作,如入队、出队等,掌握队列的基本操作在队列的顺序存储结构和链式存储结构上的实现。 3.2 实验要求: (1) 复习课本中有关栈和队列的知识; (2) 用C语言完成...
数据结构基础知识:介绍数据结构的基本概念、分类、特点等内容,包括数组、链表、栈、队列、树、图等。 2. Python数据结构:介绍Python中常用的数据结构,包括列表、元组、字典、集合等,以及它们的特点、使用方法...
数据结构第三章 堆栈与队列 计算机软件基础
平衡二叉树 可并优先队列 线段树和树状数组基础 RMQ与LCA
在了解他特性的基础上,还将巩固对这种结构的构造方法的理解。 1.2 要求:在国际象棋8×8棋盘上面,按照国际象棋规则中马的行进规则,实现从任意 初始位置,每个方格只进入一次,走遍棋盘上全部64个方格。编制程序,...
计算机软件基础:12第四章数据结构栈_队列.doc
适用数据结构课程,大学生必备资源。...此项目包含一系列文件,使用链表实现的LinkQueue数据结构以及相关的头文件,提供基础操作接口,并通过LinkQueueUse.cpp展示如何在实际应用中创建和使用这个队列。