问答题
【说明】
类Queue表示队列,类中的方法如下表所示。
| isEmpty() |
判断队列是否为空。如果队列不为空,返回true;否则,返回false |
| enqueue(Object newNode) |
入队操作 |
| dequeue() |
出队操作。如果队列为空,则抛出异常 |
类Node表示队列中的元素;类EmptyQueueException给出了队列操作中的异常处理操作。
public class TestMain { //主类
public static viod main (String args[]){
Queue q=new Queue();
q.enqueue("first!");
q.enqueue("second!");
q.enqueue("third!");
{{U}} (1) {{/U}}{
while(true)
System.out.println(q.dequeue());
}
catch({{U}} (2) {{/U}}){ }
}
public class Queue { //队列
Node m_FirstNode;
public Queue(){m_FirstNode=null;}
public boolean isEmpty(){
if(m_FirstNode==null)return true;
else return false;
}
public viod enqueue(Object newNode) { //入队操作
Node next=m_FirstNode;
if(next==null)m_FirstNode=new Node(newNode);
else{
while(next.getNext()!=null)next=next.getNext();
next.setNext(new node(newNode));
}
}
public Object dequeue(){{U}} (3) {{/U}}{ //出队操作
Object node;
if (isEempty())
{{U}} (4) {{/U}}; //队列为空, 抛出异常
else{
node=m_FirstNode.getObject();
m_FirstNode=m_FirstNode.getNext();
return node;
}
}
}
public class Node{ //队列中的元素
Object m_Data;
Node m_Next;
public Node(Object data) {m_Data=data; m_Next=null;}
public Node(Object data, Node next) {m_Data=data; m_Next=-next;}
public void setObject(Object data) {m_Data=data;}
public Object getObject(Object data) {return m_data;}
public void setNext(Node next) {m_Next=next;}
public Node getNext() {return m_Next;}
}
public class EmptyQueueException extends{{U}} (5) {{/U}}{ //异常处理类
public EmptyQueueException() {
System.out.println("队列已空! ");
}
}