用一个单链表L实现一个队列。要求操作ENQUEUE和DEQUEUE的运行时间仍为O(1)。
区块链毕设网qklbishe.com为您提供问题的解答
用一个单链表L实现一个队列。要求操作ENQUEUE和DEQUEUE的运行时间仍为O(1)。
public static class Node<V> { public V value; public Node<V> next; public Node(V v) { value = v; next = null; } } public static class MyQueue<V> { private Node<V> head; private Node<V> tail; private int size; public MyQueue(){ head=null; tail=null; size=0; } //检测队列是否为空,如果为空返回非零结果,如果非空返回0 public boolean isEmpty(){ return size==0; } //获取队列中有效元素个数 public int size(){ return size; } //入队 队尾入队列 public void offer(V value){ Node<V> cur=new Node<V>(value); if (tail==null) { head=cur; tail=cur; }else{ tail.next=cur; tail=cur; } size++; } //出队 先进先出 FIFO 队头出队列 public V poll(){ V ans=null; if(head!=null){ ans=head.value; head=head.next; size--; } if(head==null){ tail = null; } return ans; } //取队列头部元素 public V peek(){ V ans=null; if(head!=null){ ans=head.value; size--; } return ans; } }
编辑于 2023-12-18 03:11:15
以上就是关于问题用一个单链表L实现一个队列。要求操作ENQUEUE和DEQUEUE的运行时间仍为O(1)。的答案
欢迎关注区块链毕设网-
专业区块链毕业设计成品源码,定制。
区块链NFT链游项目方科学家脚本开发培训