数据结构基础-队列(一)

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

你可能感兴趣的:(数据结构,算法)