队列-基本算法

 

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);
   }
  }
 }
 
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值