问答题

【说明】
类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!");
(1) {
while(true)
System.out.println(q.dequeue());
}
catch( (2) ){ }
}
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() (3) { //出队操作
Object node;
if (isEempty())
(4) ; //队列为空, 抛出异常
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 (5) { //异常处理类
public EmptyQueueException() {
System.out.println("队列已空! ");
}
}

【参考答案】

[解析] (1)try 从紧随其后的catch可以断定这是异常处理的try-catch结构。 (2)Exception......

(↓↓↓ 点击下方‘点击查看答案’看完整答案 ↓↓↓)
热门 试题

问答题
【说明】函数int Toplogical(LinkedWDigraph G)的功能是对图G中的顶点进行拓扑排序,并返回关键路径的长度。其中图G表示一个具有n个顶点的AOE一网,图中顶点从1~n依次编号,图G的存储结构采用邻接表表示,其数据类型定义如下:typedef struct Gnode{ *邻接表的表结点类型* int adivex; *邻接顶点编号* int weight; *弧上的权值* bstmct Gonde*nextare; *指示下一个弧的结点* }Gnode;typedef struct Adjlist{ *邻接表的头结点类型* char vdata; *顶点的数据信息* struct Gnode*Firstadj; *指向邻接表的第1个表结点* }Adjlist;typedef struct LinkedWDigraph{ *图的类型* int n, e; *图中顶点个数和边数* struct Adjlist head; *指向图中第1个顶点的邻接表的头结点* }LinkedWDigraph;【函数】int Toplogical(LinkedWDigraph G){ Gnode *p;int j,w,top=0;int *Stack,*ve,*indegree;ve=(int *)mallloc(G.n+1)* sizeof(int)};indegree=(int *)malloc((G.n+1)*sizeof(int)); *存储网中个顶点的入度* Stack=(int *)malloc((G.n+1)*sizeof(int)); *存储入度为0的顶点的编号* if(!ve‖!indegree‖!Stack)exit(0);for(j=1;j<=G.n;j++){ve[j]=0; indegree[j]=0;} *for* for(j=1;j<=G.n;j++){ *求网中各顶点的入度* p=G.head[j].Firstadj;while(p){(1) ; p=p->nextarc;} *while* } *for* for(i=1;j<=G.n;j++) 求网中入度为0的顶点并保存其编号* if(!indegree[j]) Stack[++top]=j;while(top>0){w= (2) ;printf( %c , G.head[w].vdata);p=G.head[w].Firstadj;while(p){(3) ;if(!indegree[p->adjvex])Stack[++top]=p->adjvex;if( (4) )ve[p->adjvex]=ve[w]+p->weight;p=p->nextarc;} *while* return (5) ;} *Toplogical*