在Queue类中,移除并返回队列前端对象的方法是:().A、popB、peekC、DequeueD、Enqueue

题目

在Queue类中,移除并返回队列前端对象的方法是:().

  • A、pop
  • B、peek
  • C、Dequeue
  • D、Enqueue
参考答案和解析
正确答案:C
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

阅读下列函举说明和C代码,将应填入(n)处的字句写在对应栏内。

【说明4.1】

假设两个队列共享一个循环向量空间(如图1-2所示),其类型Queue2定义如下:

typedef struct {

DateType data [MaxSize];

int front[2],rear[2];

}Queue2;

对于i=0或1,front[i]和rear[i]分别为第i个队列的头指针和尾指针。函数.EnQueue (Queue2*Q,int i,DaleType x)的功能是实现第i个队列的入队操作。

【函数4.1】

int EnQueue(Queue2 * Q, int i, DateType x)

{ /*若第i个队列不满,则元素x入队列,并返回1;否则,返回0*/

if(i<0‖i>1) return 0;

if(Q->rear[i]==Q->front[(1)]

return 0;

Q->data[(2)]=x;

Q->rear[i]=[(3)];

return 1;

}

【说明4.2】

函数BTreeEqual(BinTreeNode*T1,BinTtneNode*T2)的功能是递归法判断两棵二叉树是否相等,若相等则返回1,否则返回0。函数中参数T1和T2分别为指向这两棵二叉树根结点的指针。当两棵树的结构完全相同,并且对应结点的值也相同时,才被认为相等。

已知二叉树中的结点类型BinTreeNode定义为:

struct BinTreeNode {

char data;

BinTreeNode * left, * right;

};

其中dau为结点值域,leR和risht分别为指向左、右子女结点的指针域,

【函数4.2】

int BTreeEqual(BinTreeNode * T1, BinTreeNode * T2)

{

if(Ti == NULL && T2 == NULL)return 1 /*若两棵树均为空,则相等*/

else if((4))return 0; /*若一棵为空一棵不为空,则不等*/

else if((5)) return 1; /*若根结点值相等并且左、右子树*/

/*也相等,则两棵树相等,否则不等*/

else return 0;

}


正确答案:(1)(i+1)%2(或1-i) (2)Q->rear[i] (3)(Q->rear[i]++)%Maxsize (4)T1==NULL‖T2==NULL (5)T1->data==T2-> data && BTreeEqual(T1->leftT2->left) && BTreeEqual (T1->right T2->right)
(1)(i+1)%2(或1-i) (2)Q->rear[i] (3)(Q->rear[i]++)%Maxsize (4)T1==NULL‖T2==NULL (5)T1->data==T2-> data && BTreeEqual(T1->left,T2->left) && BTreeEqual (T1->right, T2->right) 解析:这一题共有两个函数,第一个函数是一个循环共享队列入队的的问题,第二个函数是用递归法判断两棵二叉树是否相等的问题。
先分析第一个函数。(1)空所在if语句是判断是否能入队,当队列0入队时,如果队列0队尾指针与队列1队头指针相等时,说明队列 0无法入队;当队列1入队时,如果队列1队尾指针与队列0队头指针相等时,说明队列1无法入队。因此(1)空处应填写“(i+1)%2”或“1-i”。(2)、(3)空是入队操作,其操作步骤是先将元素x插入队列i队尾所指的位置,再将队尾“加1”。因此(2)空处应填写“Q->rear[i]”;由于是一个循环队列,(3)空处应填写“(Q->rear[i]+1)%Maxsize”。
再分析第二个函数。这一题比较简单,只需将程序注释转换成C语言即可得到答案。(4)空所处理的是若一棵为空,而一棵不为空则不相等,显然(4)空应填入“TI==NULL‖T2==NULL”。(5)空处是一个递归调用,处理若根结点值相等并且左、右子树也相等,则两棵树相等,因此(5)空应填入“T1->data==T2->data && BTreeEqual(T1->left, T2->left) &&BTreeEqual(Tl->right, T2->right)”及其等价形式。

第2题:

您正在开发的应用程序使用的队列名为MyQueue的类对象。此队列的类对象将用于存储在应用程序运行时,用户发送的消息。您正在开发的应用程序的管理员和用户界面创建消息报告提供了一个接口。要确保管理员选择重置选项时删除MyQueue对象中存储的所有用户消息。你应该做什么?()

A.使用MyQueue对象Enqueue方法。

B.使用MyQueue对象的Clear方法。

C.使用MyQueue对象的Dequeue方法。

D.使用TrimToSize方法的MyQueue对象


参考答案:B

第3题:

●试题四

阅读下列函数说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。

【说明4.1】

假设两个队列共享一个循环向量空间(如图1-2所示),其类型Queue2定义如下:

typedef struct{

DateType data [MaxSize];

int front[2],rear[2];

}Queue2;

对于i=0或1,front[i]和rear[i]分别为第i个队列的头指针和尾指针。函数EnQueue(Queue2*Q,int i,DateType x)的功能是实现第i个队列的入队操作。

【函数4.1】

int EnQueue(Queue2*Q,int i,DateType x)

{∥若第i个队列不满,则元素x入队列,并返回1;否则,返回0

if(i<0‖i>1)return 0;

if(Q->rear[i]==Q->front[ (1) ]

return 0;

Q->data[ (2) ]=x;

Q->rear[i]=[ (3) ];

return 1;

}

【说明4.2】

函数BTreeEqual(BinTreeNode*T1,BinTreeNode*T2)的功能是递归法判断两棵二叉树是否相等,若相等则返回1,否则返回0。函数中参数T1和T2分别为指向这两棵二叉树根结点的指针。当两棵树的结构完全相同,并且对应结点的值也相同时才被认为相等。

已知二叉树中的结点类型BinTreeNode定义为:

struct BinTreeNode{

char data;

BinTreeNode*left,*right;

};

其中data为结点值域,left和right分别为指向左、右子女结点的指针域,

【函数4.2】

int BTreeEqual(BinTreeNode*T1,BinTreeNode*T2)

{

if(T1==NULL && T2==NULL)return 1;∥若两棵树均为空,则相等

else if( (4) )return 0;∥若一棵为空一棵不为空,则不等

else if( (5) )return 1;∥若根结点值相等并且左、右子树

∥也相等,则两棵树相等,否则不等

else return 0;

}


正确答案:

●试题四

【答案】(1)(i+1)2(1-i)(2)Q->reari(3)(Q->reari]++)Maxsize

(4)Tl==NULLT2==NULL(5)Tl->data==T2->data && BTreeEqual(T1->leftT2->left) && BTreeEqual(T1->rightT2->right)

【解析】这一题共有两个函数,第一个函数是一个循环共享队列入队的的问题,第二个函数是用递归法判断两棵二叉树是否相等的问题。

先分析第一个函数。(1)空所在if语句是判断是否能入队,当队列0入队时,如果队列0队尾指针与队列1队头指针相等时,说明队列0无法入队;当队列1入队时,如果队列1队尾指针与队列0队头指针相等时,说明队列1无法入队。因此(1)空处应填写"(i+1)2"或"1-i"。(2)(3)空是入队操作,其操作步骤是先将元素x插入队列i队尾所指的位置,再将队尾"加1"。因此(2)空处应填写"Q->reari";由于是一个循环队列,(3)空处应填写"(Q->reari+1)Maxsize"。

再分析第二个函数。这一题比较简单,只需将程序注释转换成C语言即可得到答案。(4)空所处理的是若一棵为空,而一棵不为空则不相等,显然(4)空应填入"T1==NULLT2==NULL"。(5)空处是一个递归调用,处理若根结点值相等并且左、右子树也相等,则两棵树相等,因此(5)空应填入"T1->data==T2->data && BTreeEqual(T1->leftT2->left)&&BTreeEqua1(T1->rightT2->right)"及其等价形式。

 

第4题:

使用VC6打开考生文件夹下的工程test26_3。此工程包含一个test26_3.cpp,其中定义了类queue,但该类的定义并不完

整。请按要求完成下列操作,将程序补充完整。

(1)完成类queue的无参数的构造函数的定义,要求把数据成员bl和el都初始化为0,同时输出queue initialized。请在注释“//**1**”之后添加适当的语句。

(2)完成类queue的成员函数qput(int j)的定义,它的功能是把新的元素加入队列,过程是先依据bl的值判断数组是否已经满了,如果是就输出queue is full,否则bl自加一,并且把参数j的值存入bl指向的数组元素中,请在注释“//**2**”之后添加适当的语句。

(3)完成类queue的成员函数qget()的定义,它的功能是把队列开头的元素提取出队列,并返回该值,过程是先比较el和bl的值判断队列是否已空,如果是就输出queue is empty,否则el自加一,并且把el指向的数组元素返回,请在注释“// **3**”之后添加适当的语句。

程序输出结果如下:

queue initialized

queue initialized

33 11

44 22

注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。

源程序文件test26_3.cpp清单如下:

include<iostream.h>

class queue

{

int q[100];

int bl,el;

public:

queue( );

void qput(int j);

int qget( );

};

queue::queue( )

{

// **1**

}

void queue::qput(int j)

{

// **2**

{

cout<<"queue is full\n";

return;

}

bl++;

q[bl]=j;

}

int queue::qget( )

{

// **3**

{

cout<<"queue is empty\n";

return 0;

}

el++;

return q[el];

}

void main( )

{

queue aa,bb;

aa.qput(11);

bb.qput(22);

aa.qput(33);

bb.qput(44);

cout<<aa.qget()<<" "<<aa.qget()<<"\n";

cout<<bb.qget()<<" "<<bb.qget()<<"\n";

}


正确答案:(1) bl=el=O; cout"queue initialized\n"; (2) if(bl==100) (3) if(el==bl)
(1) bl=el=O; cout"queue initialized\n"; (2) if(bl==100) (3) if(el==bl) 解析:主要考查考生对于具体的一个队列类的掌握,对列是一种特殊的存储结构,使用先进先出原则,题目中bl和el分别指向队列的开头和结尾,其中(2)是队列的标准插入操作,(3)是队列的标准的删除操作,注意它们的操作方式和先判断后操作的原则。

第5题:

阅读以下技术说明和Java代码,将Java程序中(1)~(5)空缺处的语句填写完整。

[说明]

类Queue表示队列,类中的方法如表4-12所示。

类Node表示队列中的元素;类EmptyQueueException给出了队列中的异常处理操作。

[Java代码]

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 (is empty())

(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 ( "队列已空!" );

}

}


正确答案:这是一道要求读者掌握Java异常处理机制的程序分析题。本题的解答思路如下。 异常是指计算机程序执行期间中断的正常流程的事件。例外是在程序运行过程中发生的异常事件比如除0溢出、数组越界、文件找不到等这些事件的发生将阻止程序的正常运行。 当一个方法中发生错误时该方法创建一个对象(该对象称之为异常对象)并将它交给运行时系统。异常对象包含了关于错误的信息即包括错误的类型和错误发生时程序的状态。 “抛出一个异常”是指创建异常对象并将它交给运行时系统。Java的异常处理是通过try、catch、throw、 throws和finally 5个关键字来实现的。这几个关键字的解释如表4-15所示。 Java运行时系统要求方法必须捕获或者指定它可以抛出的所有被检查的异常如表4-16所示。 try块和catch块是异常处理器的两个组件。在try块中产生的异常通常被紧跟其后的catch块指定的处理器捕获。 try { 可能抛出异常的语句 } catch(异常类型 异常引用) { 处理异常的语句 } catch语句可以有多个分别处理不同类的例外。Java运行时系统从上到下分别对每个catch语句处理的例外类型进行检测直到找到类型相匹配的catch语句为止。其中类型匹配是指catch所处理的例外类型与生成的例外对象的类型完全一致或者是它的父类因此catch语句的排列顺序应该是从特殊到一般。也可以用一个catch语句处理多个例外类型此时它的例外类型参数应该是这几个例外类型的父类程序设计中要根据具体的情况来选择catch语句的例外处理类型。 在选择要抛出的异常的类型时可以使用其他人编写的异常类也可以编写自己的异常类。本试题中采用自定义的类作为异常的类型。 仔细阅读试题中给出的Java源代码可知主类TestMain包含了异常处理机制用于检测在出队时“队列为空”的错误。因此(1)空缺处所填写的内容是“try”。 由catch语句的语法可知(2)空缺处所填写的内容是对相应异常类型的引用。结合试题中给出的关键信息“类EmptyQueueException给出了队列操作中的异常处理操作”即类EmptyQueueException是进行异常处理的类因此(2)空缺处所填写的内容是“EmptyQueueExceptione”或者“Exceptione”其中e是对象名可用任意合法标识符替换。 由于异常都是从超类Exception派生而来的因此(5)空缺处所填写的内容是“Exception”。 仔细阅读主类TestMain程序段可以看到在try块的内部并没有给出显示的抛出异常语句即没有出现throw语句。结合(4)空缺处所在行的注释—“队列为空抛出异常”可以推断在类Queue的方法dequeue中必定要抛出异常。因此(3)空缺处应指定方法dequeue可以抛出异常即所填写的内容是“throws EmptyQueueException”。 (4)空缺处可以使用throw语句抛出异常而使用throw语句时需要一个参数即一个可抛出的对象因此(4)空缺处所填写的内容是“throw(new EmptyQueueException())”。
这是一道要求读者掌握Java异常处理机制的程序分析题。本题的解答思路如下。 异常是指计算机程序执行期间中断的正常流程的事件。例外是在程序运行过程中发生的异常事件,比如除0溢出、数组越界、文件找不到等,这些事件的发生将阻止程序的正常运行。 当一个方法中发生错误时,该方法创建一个对象(该对象称之为异常对象)并将它交给运行时系统。异常对象包含了关于错误的信息,即包括错误的类型和错误发生时程序的状态。 “抛出一个异常”是指创建异常对象并将它交给运行时系统。Java的异常处理是通过try、catch、throw、 throws和finally 5个关键字来实现的。这几个关键字的解释如表4-15所示。 Java运行时系统要求方法必须捕获或者指定它可以抛出的所有被检查的异常,如表4-16所示。 try块和catch块是异常处理器的两个组件。在try块中产生的异常通常被紧跟其后的catch块指定的处理器捕获。 try { 可能抛出异常的语句 } catch(异常类型 异常引用) { 处理异常的语句 } catch语句可以有多个,分别处理不同类的例外。Java运行时系统从上到下分别对每个catch语句处理的例外类型进行检测,直到找到类型相匹配的catch语句为止。其中,类型匹配是指catch所处理的例外类型与生成的例外对象的类型完全一致或者是它的父类,因此,catch语句的排列顺序应该是从特殊到一般。也可以用一个catch语句处理多个例外类型,此时它的例外类型参数应该是这几个例外类型的父类,程序设计中要根据具体的情况来选择catch语句的例外处理类型。 在选择要抛出的异常的类型时,可以使用其他人编写的异常类,也可以编写自己的异常类。本试题中采用自定义的类作为异常的类型。 仔细阅读试题中给出的Java源代码可知,主类TestMain包含了异常处理机制,用于检测在出队时“队列为空”的错误。因此(1)空缺处所填写的内容是“try”。 由catch语句的语法可知,(2)空缺处所填写的内容是对相应异常类型的引用。结合试题中给出的关键信息“类EmptyQueueException给出了队列操作中的异常处理操作”,即类EmptyQueueException是进行异常处理的类,因此(2)空缺处所填写的内容是“EmptyQueueExceptione”,或者“Exceptione”,其中,e是对象名,可用任意合法标识符替换。 由于异常都是从超类Exception派生而来的,因此(5)空缺处所填写的内容是“Exception”。 仔细阅读主类TestMain程序段可以看到,在try块的内部并没有给出显示的抛出异常语句,即没有出现throw语句。结合(4)空缺处所在行的注释—“队列为空,抛出异常”可以推断,在类Queue的方法dequeue中必定要抛出异常。因此(3)空缺处应指定方法dequeue可以抛出异常,即所填写的内容是“throws EmptyQueueException”。 (4)空缺处可以使用throw语句抛出异常,而使用throw语句时需要一个参数,即一个可抛出的对象,因此(4)空缺处所填写的内容是“throw(new EmptyQueueException())”。

第6题:

您正在开发的应用程序使用的队列名为 MyQueue 的类对象。此队列的类对象将用于存储在应用程序运行时,用户发送的消息。您想在队列开始访问消息,在处理用户的消息,而不删除它。你应该做什么?()

A.使用MyQueue对象Enqueue方法

B.使用MyQueue对象的Contains方法

C.使用MyQueue对象的Dequeue方法

D.使用MyQueue对象的Peek方法。


参考答案:D
peek是用来确定你read的文件是否结束了,如果结束了会返回int型 -1 , 举个例子,你可以在输出每一行之前检查一下文件是否结尾,如果没结束就输出此行。 StreamReader sr = new StreamReader(@"c:\1.txt") while (sr.Peek() > -1) { Console.WriteLine(sr.ReadLine()); }

第7题:

阅读下列函数说明和Java代码,将应填入(n)处的字句写在对应栏内。

【说明】

类Queue表示队列,类中的方法如下表所示。

类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 (2)Exception e或者EmptyQueueException e (3)throw EmptyQueueException (4)throw(new EmptyQueueException()) (5)Exception
(1)try (2)Exception e或者EmptyQueueException e (3)throw EmptyQueueException (4)throw(new EmptyQueueException()) (5)Exception 解析:(1)try
从紧随其后的catch可以断定这是异常处理的try-catch结构。
(2)Exception e或者EmptyQueueException e
其中e是对象名,可用任意合法标识符替换,这是catch要捕获的信息。
(3)throw EmptyQueueException
当队列为空时,抛出错误信息EmptyQueueException。
(4)throw(new EmptyQueueException())
当队列为空时,抛出异常。动态生成EmptyQueueException对象,出错处理。
(5)Exception
EmptyQueueException对象是从异常处理类Exception扩展而来。

第8题:

在J2EE中,对于在Servlet如何获得会话,描述正确的是()。

A.HttpServletRequest类的getSession方法有两个:带参数的getSession方法和不带参数的getSession方法

B.在Servlet中,可以使用HttpSessionsession=newHttpSession()创建session对象

C.如果HttpServletRequest类的getSession方法的参数为false,表示如果没有与当前的请求相联系的会话对象时,该方法返回null

D.如果HttpServletRequest类的getSession方法的参数为true,表示如果没有与当前的请求相联系的会话对象时,该方法返回null


参考答案:A, C

第9题:

在Queue类中,移除并返回队列前端对象的方法是()

A. Dequene

B. Enqueue

C. Peek

D. Pop


正确答案:A

第10题:

阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。

[说明]

这是一个模拟渡口管理的算法。某汽车轮渡口,过江渡船每次能载10辆车过江。过江车辆分为客车类和火车类,上船有如下规定:同类车先到先上船,客车先于货车上渡船,且每上4辆客车,才允许上一辆货车;若等待客车不足4辆,则以货车代替,若无货车等待则允许客车都上船。

程序中用到的函数有enqueue(queue*sq,elemtype*x)在队列sq中入队一个元素x;outqueue(queue*sq,elemtype*x)在队列sq中出队一个元素,并将其值赋给x;empty(queue*sq)判断队列sq是否为空队,若为空,返回1;否则返回0。

[C程序]

include<stdio.h>

void pass(){

queue bus,truct; /*bus表示客车队列,truck表示货车队列*/

char ch;

int n,tag; /* ]n为车号,tag为标志,tag=0表示客车,tag=1表示货车*/

intcount=0,countbus=0,counttruck=0; /*分别表示上渡船汽车数、客车数、货车数*/

while(1){

printf("输入命令: \n");

Scanf("%c",&ch);

switch(ch){

case'e':

case'E': printf("车号: \n");

Scanf("%d",&n);

printf("客车\货车(0\1): \n");

scanf("%d",&tag);

if( (1) )

enqueue(&bus,n);

else

enqueue(&truck,n);

break;

case'i':

case'I': while(count<10){

if( (2) && empty(&bus)==0){ /*客车出队*/

outqueue(&bus,&n);

printf("上船的车号为: \n");

count++;

(3) ;

}

eise if( (4) ){ /*货车出队*/

countbus=0;

outqueue(&truck,&n);

printf("上船的车号为: \n");

count++;

counttruck++;

}

else if(empty(&bus)==0){

(5);

outqueue(&truck,&n);

printf("没有10辆车排队轮渡\n");

count++;

countbus++;

}

else{

printf("没有10辆车排队轮渡\n");

retUrn;

}

break;

}

case'q':

case'Q':break;

}

if(ch=='q' || ch=='Q')

break;

}

}


正确答案:(1) tag==O (2) count4 (3) countbus++ (4)empty(&truck)==0 (5) counttruck=0
(1) tag==O (2) count4 (3) countbus++ (4)empty(&truck)==0 (5) counttruck=0 解析:命令E(e)表示有汽车来等船渡江,按客车、货车分类进入相应的队列排队。所以空(1)填“tag==0”,表示客车来渡船。命令I(i)表示渡船到渡口,在count小于10时环形:①若count4,客车队列又非空,将客车队列的队头汽车出队上渡船。count和countbus增1;否则转②。所以空(2)填“count4”,空(3)填“countbus++”。②若count>=4,或客车队列为空队且货车队列非空,将货车队列的队头汽车出队上渡船。count和counttruck增1,否则转③。即空(4)填“empty(&tmck)==0”。③若货车队列为空队且客车队非空,将客车队列的队头汽车出队上渡船。count和countbus增1,否则转④。因此(5)填“counttruck=0”。④提示相应错误信息并退出程序运行。

更多相关问题