java 队列实现_队列的实现(JAVA)

链表实现队列

* 结点类的声明

* @author MrLBZ

* @param

*/public class LinearNode {    private LinearNode next;    private T element;    public LinearNode() {

next = null;

element = null;

}    public LinearNode(T elem) {

next = null;

element = elem;

}    public LinearNode getNext() {        return next;

}    public void setNext(LinearNode node) {

next = node;

}    public T getElement() {        return element;

}    public void setElement(T elem) {

element = elem;

}

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

package ds.java.ch05.queueImpl;public class EmptyCollectionException extends RuntimeException{

/**

* Sets up this exception with an appropriate message.

*/

public EmptyCollectionException (String collection)

{      super ("The " + collection + " is empty.");

}

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

package ds.java.ch05.queueImpl;/**

* @author LbZhang

* @version 创建时间:2015年11月16日 下午7:30:59

* @description 链表实现队列

*/public class LinkedQueue implements QueueADT {

private int count;    private LinearNode head, tail;    // 首尾声明

/**

* 初始化队列

*/

public LinkedQueue() {

count = 0;

head = tail = null;

}    @Override

public void enqueue(T elem) {

LinearNode node = new LinearNode(elem);        if (isEmpty()) {// /如果是空的话初始化头结点

head = node;

} else {

tail.setNext(node);

}

tail = node;// /新结点的next不需要显式的设置 因为在new一个新结点的时候已经设置完毕

count++;

}    @Override

public T dequeue() throws EmptyCollectionException{        if (isEmpty()) {            throw new EmptyCollectionException("queue");

}

T result = head.getElement();

head = head.getNext();

count--;        if (isEmpty()) {

tail = null;// /如果栈变成了空栈

}        return result;

}    @Override

public T first() throws EmptyCollectionException{        if (isEmpty())            throw new EmptyCollectionException("queue");        return head.getElement();

}    @Override

public boolean isEmpty() {        return (count == 0);

}    @Override

public int size() {        return count;

}    @Override

public String toString() {

String result = "";

LinearNode current = head;        while (current != null) {

result = result + (current.getElement()).toString() + "\n";

current = current.getNext();

}        return result;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值