您的位置:首页 > 编程语言 > Java开发

JAVA实现队列 队列的链式存储结构及操作

2014-09-04 16:37 686 查看
这是一篇JAVA实现队列  队列的链式存储结构及操作实现的文章,有兴趣的可以看看。

首先还是写个接口吧,这样方法多的时候不会乱

package com.guobing.queue;

public interface Queue_Interface {

public void init();            //初始化队列
public void enter(Object obj); //入队列
public Object leave();         //出对列
public Object peek();          //返回队列的首元素
boolean isEmpty();             //判断队列是否为空
public void clear();           //清空队列
public void print();           //打印队列
}


实现过程:

package com.guobing.queue;
/**
* JAVA实现队列  队列的链式存储结构及操作
* @author guob
*
*/
public class LinkQueue implements Queue_Interface{

private Node front, rear;                      //定义头指针、尾指针
/**
* 清空队列
*/
@Override
public void clear() {
front = rear = null;
System.out.println("队列已清空");
}

/**
* 入队列
*/
@Override
public void enter(Object obj) {
if(rear == null) {                         //当队列为空时
front = rear = new Node(obj, null);    //队尾指针和头指针相同
} else {							       //队列不为空
rear = rear.next = new Node(obj, null);//尾指针永远指向空
}
}

/**
* 初始化
*/
@Override
public void init() {
front = rear = null;
}

/**
* 判断是否为空
*/
@Override
public boolean isEmpty() {
return front == rear;
}

/**
* 出队列
*/
@Override
public Object leave() {
if(front == null) {                        //先判断是不是为空
return null;
}else {
Node p = front;                        //先得把头指针保存起来,不然就丢了
front = front.next;
if(front == null)                      //需要判断是不是为空
rear = null;                       //为空的话尾指针必须要为null
System.out.println("执行出队列操作,出队列的元素为:" + p.date);
return p.date;
}
}

/**
* 返回队首元素
*/
@Override
public Object peek() {
if(front == null) {
System.out.println("队首元素为空");
return null;
} else {
System.out.println("队首元素为:" + front.date);
return front.date;                     //不为空的时候返回头指针的值
}
}

/**
* 打印出队列中的信息
*/
@Override
public void print() {
Node p = front;
System.out.println("当前队列中的元素为:");
while(p != null) {
System.out.print(p.date + " ");
p = p.next;
}
}
public static void main(String [] args) {
LinkQueue lk = new LinkQueue();
lk.init();
lk.enter("a");
lk.enter("b");
lk.enter("c");
lk.enter("d");
lk.print();
lk.peek();
lk.leave();
lk.print();
}
}
/**
* 定义单链表
* @author guob
*
*/
class Node {
Object date;
Node next;
public Node(Object obj, Node nt) {
this.date = obj;
this.next = nt;
}
}


测试结果:

当前队列中的元素为:
a b c d 队首元素为:a
执行出队列操作,出队列的元素为:a
当前队列中的元素为:
b c d


完毕,有疑问可以共同探讨!欢迎交流。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据结构