欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java数据结构与算法之双向循环队列的数组实现方法

程序员文章站 2024-03-13 17:04:45
本文实例讲述了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算法相关内容感兴趣的读者可查看本站专题:《java数据结构与算法教程》、《java操作dom节点技巧总结》、《java文件与目录操作技巧汇总》和《java缓存操作技巧汇总

希望本文所述对大家java程序设计有所帮助。