当前位置: 移动技术网 > IT编程>开发语言>Java > Java实现队列的三种方法集合

Java实现队列的三种方法集合

2020年09月17日  | 移动技术网IT编程  | 我要评论
数组实现队列//数组实现队列class queue{ int[] a = new int[5]; int i = 0; //入队操作 public void in(int m) { a[i++] =

数组实现队列

//数组实现队列
class queue{
 int[] a = new int[5];
 int i = 0;
 //入队操作
 public void in(int m) {
 a[i++] = m;
 }
// 出队列操作  取出最前面的值 通过循环遍历把所有的数据向前一位
 public int out() {
 int index = 0;
 int temp = a[0];
 for(int j = 0;j < i;j++) {
  a[j] = a[j + 1];
 }
 return temp;
 } 
}

arraylist实现队列

//集合实现队列
class queue{
 list<integer> list = new arraylist<integer>();
 int index = 0;
 
 public void in(int n) {
 list.add(n);
 index++;
 }
 //出队列操作
 //出队
  public int out(){ 
    if(!list.isempty()){ 
      index--; 
      return list.remove(0); 
    } 
    return -1; 
  } 
}

两个堆栈实现队列

//两个堆栈实现一个队列
class queue3 {

 stack<integer> stacka = new stack<integer>();
 stack<integer> stackb = new stack<integer>();

 //入队
 public void in(int n) {
   stacka.push(n);
 }

 //出队 我们把a里面的元素遍历拿出放入b中 再拿出b中的第一个元素 
 public int out() {
  //判断b栈有没有元素 有返回false 无返回真
   if(stackb.isempty()) {
    while(!stacka.isempty()) {
    stackb.push(stacka.pop());
    }
   }
   return stackb.pop();
 }
}

补充知识:java使用链表实现队列

队列使用java进行链表实现,在网上找到了一张图,很好,借鉴一下

设置两个结点node,front指向队首元素,rear指向队尾;

上代码:

 public class linkedqueue {
 
  node front;//队头指针,指向队头节点
  node rail;//队尾指针,指向队尾节点 
  int size = 0;//记录队列长度 
 
  //构造函数
  public linkedqueue() {
    front = rail = null;
  }
 
  public boolean isempty() {
    return size == 0 ? true : false;
  }
 
  //添加元素
  public boolean addqueue(object ele) {
    if (size == 0) {
      front = new node(null, ele);
      rail = front;
      size++;
      return true;
    }
    node s = new node(null, ele);
    //这块有个主意的地方,一旦rail设置了next属性,因为front节点与rail节点指向了同一个node节点,持有同一个结点的一个引用,因此front节点next属性也被填充
    rail.setnext(s);
    rail = s;
    size++;
    return true;
  } 
 
  /**
   * 删除元素,出队列
   * @return
   */
  public boolean deletequeue() {
    if (isempty()) {
      system.out.println("当前队列为空");
      return false;
    } 
    front = front.next;
    size--;
    return true; 
  } 
 
  public static void main(string[] args) {
    linkedqueue queue = new linkedqueue();
 
    queue.addqueue(1);
    queue.addqueue(2);
    queue.addqueue(3);
    queue.deletequeue();
 
  } 
}
 
/**
 * 首先链表底层是一个个结点
 */
class node {
 
  node next;
  object element;
 
  public node(node next, object element) {
    this.next = next;
    this.element = element;
  }
 
  public node getnext() {
    return next;
  }
 
  public void setnext(node next) {
    this.next = next;
  }
 
  public object getelement() {
    return element;
  }
 
  public void setelement(object element) {
    this.element = element;
  }
 
}

以上这篇java实现队列的三种方法集合就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持移动技术网。

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网