第三章栈和队列自测题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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)