数据结构(七)---循环队列的实现---java版
生活随笔
收集整理的這篇文章主要介紹了
数据结构(七)---循环队列的实现---java版
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
---------------------------------------------接口定義----------------------------------
package com.cn.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();
}
---------------------------------------------具體的實現(xiàn)--------------------------------
package com.cn.hbut.daoImpl;
import com.cn.hbut.dao.Queue;/**
?* @author Administrator
?* 循環(huán)隊列的實現(xiàn)
?*/
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() {
//循環(huán)隊列需要考慮全部隊滿后全部出隊,再入隊后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];
}
//--------------------------------測試循環(huán)隊列------------------------------
public static void main(String[] args) {
//創(chuàng)建一個循環(huán)隊列,最多容納元素數(shù)8
SqQueue sque = new SqQueue(8);
//開始入隊
sque.enque(1);
sque.enque(2);
sque.enque(3);
sque.enque(4);
System.out.println("隊列元素個數(shù):"+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());
}
}
測試結(jié)果:
隊列元素個數(shù):4
隊首元素:1
隊列是否為空:false
隊列是否已滿false
當前出隊的元素:1
出隊后的隊首元素:2
總結(jié)
以上是生活随笔為你收集整理的数据结构(七)---循环队列的实现---java版的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据结构(六)---队列的链式存储的实现
- 下一篇: 平衡二叉树 构造方法