700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 数据结构(七)---循环队列的实现---java版

数据结构(七)---循环队列的实现---java版

时间:2021-02-20 00:46:10

相关推荐

数据结构(七)---循环队列的实现---java版

---------------------------------------------接口定义----------------------------------

package .hbut.dao;

public interface Queue {

public void clear();

public int length();

public boolean full();

public boolean empty();

//入队

public boolean enque(Object e);

//出队,需要删除第一个元素

public Object dlque();

//获取队头元素

public Object getf();

}

---------------------------------------------具体的实现--------------------------------

package .hbut.daoImpl;

import .hbut.dao.Queue;

/**

* @author Administrator

* 循环队列的实现

*/

public class SqQueue implements Queue{

Object [] elem;

int front,rear;

int len;

public SqQueue() {

len =100;

elem = new Object[len];

front=rear=0;

}

public SqQueue(int maxsz) {

len = maxsz;

elem = new Object[len];

front = rear =0;

}

@Override

public void clear() {

front = rear =0;

}

@Override

public int length() {

//循环队列需要考虑全部队满后全部出队,再入队后rear为0,而front为len-1

return (rear-front+len)%len;

}

@Override

public boolean full() {

return (rear+1)%len==front;

}

@Override

public boolean empty() {

return front==rear;

}

@Override

public boolean enque(Object e) {

if(full()){

return false;

}

elem[rear]=e;

rear = rear+1%len;

return true;

}

//元素出队,删除队首元素

@Override

public Object dlque() {

if(empty()){

return null;

}

Object obj =elem[front];

front = (front+1)%len;

return obj;

}

@Override

public Object getf() {

if(empty()){

return null;

}

return elem[front];

}

//--------------------------------测试循环队列------------------------------

public static void main(String[] args) {

//创建一个循环队列,最多容纳元素数8

SqQueue sque = new SqQueue(8);

//开始入队

sque.enque(1);

sque.enque(2);

sque.enque(3);

sque.enque(4);

System.out.println("队列元素个数:"+sque.length());

System.out.println("队首元素:"+sque.getf());

System.out.println("队列是否为空:"+sque.empty());

System.out.println("队列是否已满"+sque.full());

System.out.println("当前出队的元素:"+sque.dlque());

System.out.println("出队后的队首元素:"+sque.getf());

}

}

测试结果:

队列元素个数:4

队首元素:1

队列是否为空:false

队列是否已满false

当前出队的元素:1

出队后的队首元素:2

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。