第三章栈和队列自测题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第三章栈、队列和数组

一、填空题

1.在栈顶进行插入运算,被称为_______,在栈顶进行删除运算,被称为______。

2.对于顺序栈,若栈顶下标值top=0,此时,如果作退栈运算,则产生“________”。

3.对于顺序栈而言,在栈满状态下,如果此时再作进栈运算,则会发生“________”。

4.一般地,栈和线性表类似有两种实现方法,即________实现和________实现。

5.以下运算实现在顺序栈上的初始化,请在________处用适当的句子予以填充。

Status InitStack(SqStack &S)

{ S.base = (SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType));

if (!S.base) exit(OVERFLOW);

S.top = ________;

S.stacksize = ____________;

return OK:

}

6.以下运算实现在顺序栈上的进栈,请在________处用适当的语句予以填充。

Status Push(SqStack &S,SElemType e)

{ if (S.top-S.base>=S.stacksize)

{ S.base = (SElemType *)realloc(S.base,

(S.stacksize+STACKINCREMENT)*sizeof(SElemType));

if (________) exit(OVERFLOW);

S.top = _______________;

S.stacksize = _____________________;

}

*S.top ++= e;

return OK;

}

7.以下运算实现在顺序栈上的退栈,请在________________用适当句子予以填充。

Status Pop(SqStack &S,SElemType &e)

{ if (_____________)

return ERROR;

e = ________;

return OK;

}

8. 以下运算实现在顺序栈上判栈空,请在________________处用适当句子予以填充。

int StackEmpty (SqStack &S)

{ return ________________ ;

}

9.以下运算实现在顺序栈上取栈顶元素,请在________________处用适当句子予以填充。

Status GetTop(SqStack S,SElemType &e)

{ if (_____________) return ERROR;

e = _____________;

return OK;

}

10.在队列中,新插入的结点只能添加到________________,被删除的只能是排在________________的结点。

11.顺序队的出、入队操作会产生“________________”。

12.以下运算实现在循环队列上的初始化,请在_______________处用适当句子予以填充。

Status InitQueue(SqQueue &Q)

{ Q.base=______________________________________;

if (!Q.base) exit(OVERFLOW);

Q.front = Q.rear = _________;

return OK;

}

13. 以下运算实现在循环队列上的入队列,请在____________处用请适当句子予以填充。

Status EnQueue(SqQueue &Q , QElemType e)

{ if( ________________ )

return ERROR;

Q.base[Q.rear] = e;

Q.rear = ____________________;

return OK;

}

14. 以下运算实现在循环队列上的出队列,请在_____________处用适当句子予以填充。

Status DeQueue(SqQueue &Q , QElemType &e)

{ if (______________)

return ERROR;

e = Q.base[Q.front];

Q.front = ____________________;

return OK;

}

15. 以下运算实现在循环队列上判队空,请在________________处用适当句子予以填充。

Int QueueEmpty (SqQueue &Q)

{ return ____________________; }

16. 以下运算实现在顺序队列上取队头元素,请在____________处用适当句子予以填充。

Status QueueGetHead(SqQueue Q , QElemType &e)

{ if (______________)

return ERROR;

e = Q.base[Q.front];

return OK;

}

17.在具有n个单元的循环队列中,队满时共有___________个元素。

18.___________可以作为实现递归函数调用的一种数据结构。

二、单项选择题

1.在以下栈的基本运算中,不是加工型运算的是()

①lnitStack(S) ②Push(S,X) ③Pop(S) ④EmptyStack(S)

2.在以下队列的基本运算中,不是加工型运算的是()

①InitQueue(Q) ②EnQueue(Q,e) ③DeQueue(Q,e) ④QueueGetHead(Q,e)

相关文档
最新文档