数据结构之队列的Java实现

     本文由广州疯狂软件java培训分享:

  队列在计算机术语中使用queue,和list(排)其实是一个意思。队列也是一种数据结构,类似于栈,只是与栈相反,在队列中最先插入的数据也最先被移除,即先进先出(FIFO,First In First Out)。队列可以理解成排队,比如,食堂窗口排的队,越在前面的,越早得到服务而先离开。在银行大厅的排号的机器也许就用了队列这个数据结构。在打印的时候,有“添加到队列”的选项,队列应用是很广泛的。

  队列的操作有:插入到队尾数据项,移除队头数据项,查看数据项等功能。

  下面用Java实现队列的基本功能(数组版)。

  package cn.zhf.list;

  public class MyQueue {

  private int maxSize;//定义最大容量

  private int[] qarray;//存放元素的数组

  private int front;//前一个元素索引

  private int rear;//后一个元素索引

  private int nItems;//队列中元素的个数

  //构造对象并初始化

  public MyQueue(int s){

  maxSize = s;

  qarray = new int[maxSize];

  front = 0;

  rear = -1;

  nItems = 0;

  }

  //在队列尾端插入元素

  public void enqueue(int i){

  if(rear == maxSize - 1){

  rear = -1;

  }

  qarray[++rear] = i;

  nItems++;

  }

  //删除队首元素

  public int dequeue(){

  int temp = qarray[front++];

  if(front == maxSize){

  front = 0;

  }

  nItems--;

  return temp;

  }

  public int peekFront(){//取第一个元素

  return qarray[front];

  }

  public boolean isEmpty(){

  return (nItems == 0);

  }

  public static void main(String[] args) {

  MyQueue queue = new MyQueue(5);

  queue.enqueue(1);

  queue.enqueue(2);

  queue.enqueue(3);

  queue.enqueue(4);

  queue.enqueue(5);

  while(!queue.isEmpty()){

  int i = queue.dequeue();

  System.out.println(i);

  }

  }

  }

  下面是用链表实现的队列。

  package cn.zhf.list;

  //其中的Link和LinkList两类同栈中的相同

  public class LinkQueue {

  private LinkList list;

  public LinkQueue(){

  list = new LinkList();

  }

  public boolean isEmpty(){

  return list.isEmpty();

  }

  public void insert(int id,double dd){

  list.insertFirst(id, dd);

  }

  public Link delete(){

  return list.deleteFirst();

  }

  public void display(){

  list.displayLink();

  }

  public static void main(String[] args) {

  LinkQueue lq = new LinkQueue();

  lq.insert(12, 20.0);

  lq.insert(13, 20.1);

  lq.insert(14, 20.2);

  lq.display();

  System.out.println("-----------");

  lq.delete();

  lq.display();

  }

  }

  运行结果:

  14,20.2

  13,20.1

  12,20.0

  -----------

  13,20.1

  12,20.0

  疯狂软件教育中心依托开发团队的强大技术实力,把企业最新技术融入实训课程,打造金牌的品质,才能给予学员黄金的未来,疯狂软件凭借过硬的技术实力与丰富的项目开发经验,赢得了社会的肯定。疯狂软件Java培训师资力量强大,课程内容深入,为学员高薪就业做了很好的铺垫,拥有丰富就业指导经验的就业团队也成为了学员高薪就业的先天优势。地址:广州天河区车陂沣宏大厦3楼。

原文地址:https://www.cnblogs.com/gojava/p/3611345.html