【分析解答题】
【说明】
类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 ClAssEmptyQuEuEExCEption ExtEnDs{{U}} (5) {{/U}}{ //异常处理类
puBliCEmptyQuEuEExCEption() {
SystEm.out.println("队列已空! ");
}
}