queue java实现_队列(Queue)用JAVA简单实现

代码如下:

import java.util.Iterator;

import java.util.List;

public class Queue extends AbstractSingleLinkedList implements List ,java.io.Serializable {

private static final long serialVersionUID = 6203363761107460505L;

// 指向队头

private transient Entry front;

private transient int size ;

// 指向队尾

private transient Entry rear;

@Override

public Iterator singleListIterator() {

return new QueueIterator();

}

public Queue() {

this.front = this.rear = null;

}

@Override

public boolean add(E e) {

Entry newData = new Entry(e, null);

if (this.rear == null) {

this.rear = newData;

this.front = this.rear;

} else {

Entry preElement = this.front;

while (preElement.next != null) {

preElement = preElement.next;

}

preElement.next = newData;

}

size ++;

return true;

}

/**

* 队尾加入元素

* @param e

* @return

*/

public boolean append(E e) {

return add(e);

}

/**

* 取队头数据

*/

@Override

public E get(int index) {

return this.front.element;

}

public E getFrist() {

return get(0);

}

/**

* 出队列

* @return

*/

public E delete() {

E result = null;

Entry entry = this.front;

if (entry != null) {

result = entry.element;

this.front = entry.next;

entry = null;

}

size --;

return result;

}

/**

* 队长度

*/

@Override

public int size() {

return size;

}

private static class Entry {

E element;

Entry next;

public Entry(E element, Entry next) {

this.element = element;

this.next = next;

}

}

private class QueueIterator implements Iterator {

private Entry itFront = front;

@Override

public boolean hasNext() {

return itFront != null;

}

@Override

public E next() {

E result = itFront.element ;

itFront = itFront.next;

return result;

}

@Override

public void remove() {

throw new UnsupportedOperationException("can not remove");

}

}

}

测试代码如下:

public class QueueTest {

public static void main(String[] args) throws Exception{

Queue qu = new Queue();

qu.append(123);

qu.append(456);

qu.append(789);

qu.append(741);

System.out.println(qu.getFrist());

qu.delete();

System.out.println(qu.getFrist());

for (Integer val : qu) {

System.out.print(val);

System.out.print('\t');

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值