这里有新鲜出炉的Java设计模式,程序狗速度看过来!
java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaEE(j2ee), JavaME(j2me), JavaSE(j2se))的总称。
这篇文章主要介绍了java数据结构与算法之双向循环队列的数组实现方法,结合实例形式分析了双向循环队列的原理与数组实现技巧,并附带说明了该算法的用途,需要的朋友可以参考下
本文实例讲述了java数据结构与算法之双向循环队列的数组实现方法。分享给大家供大家参考,具体如下:
需要说明的是此算法我并没有测试过,这里给出的相当于伪代码的算法思想,所以只能用来作为参考!
- package source;
- public class Deque {
- private int maxSize;
- private int left;
- private int right;
- private int nItems;
- private long[] myDeque;
- //constructor
- public Deque(int maxSize) {
- this.maxSize = maxSize;
- this.myDeque = new long[this.maxSize];
- this.nItems = 0;
- this.left = this.maxSize;
- this.right = -1;
- }
- //insert a number into left side
- public void insertLeft(long n) {
- if (this.left == 0) this.left = this.maxSize;
- this.myDeque[--this.left] = n;
- this.nItems++;
- }
- //insert a number into right side
- public void insertRight(long n) {
- if (this.right == this.maxSize - 1) this.right = -1;
- this.myDeque[++this.right] = n;
- this.nItems++;
- }
- //remove from left
- public long removeLeft() {
- long temp = this.myDeque[this.left++];
- if (this.left == this.maxSize) this.left = 0;
- this.nItems--;
- return temp;
- }
- //remove from right
- public long removeRight() {
- long temp = this.myDeque[this.right--];
- if (this.left == -1) this.left = this.maxSize - 1;
- this.nItems--;
- return temp;
- }
- //return true if deQue is empty
- public boolean isEmpty() {
- return (this.nItems == 0);
- }
- //return size of the deQue
- public int size() {
- return this.nItems;
- }
- }
PS:双向循环队列的用处很大,可以做为普通队列,也可以用来做栈来用!
希望本文所述对大家java程序设计有所帮助。
来源: http://www.phperz.com/article/17/1113/360269.html