第三章栈和队列自测题
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
③d c e a b
④a b c d e
5.一个队列的输入序列是1,2,3,4,则队列的输出序列是
(②)
① 4,3,2,1
② 1,2,3,4,
③1,4,3,2
④ 3,2,4,1
6.设计一个判别表达式中左、右括号是否配对出线的算法,采用( ②
)数据结构最佳。
① 线性表的顺序存储结构
②栈
③ 队列
④ 线性表的链式存储结构
2.设C语言数组Data[m+1]作为循环队列SQ的存储空间, front为队头
指针,rear为队为指针,则执行出队操作的语句为
(④ )
①front=front+1
② front=(front+1)%m
③rear=(rear+1)%m
④ front=(front+1)%(m+1)
3.设有一顺序栈已含3个元素,如下图所示,元素a4正等待进栈。那么
) return OK;
} 15. 以下运算实现在循环队列上判队空,请在________________处用 适当句子予以填充。 Int QueueEmpty (SqQueue &Q) { return ____________________; } ( Q.front == Q.rear) 16. 以下运算实现在顺序队列上取队头元素,请在____________处用 适当句子予以填充。 Status QueueGetHead(SqQueue Q , QElemType &e) { if (______________) ( Q.front == Q.rear)
Status Pop(SqStack &S,SElemType &e) { if (_____________) ((S.top == S.base) )
return ERROR;
e = ________; (*--S.top ) return OK; } 8. 以下运算实现在顺序栈上判栈空,请在________________处用适 当句子予以填充。
下列4个序列
中不可能出现的出栈序列是
(①)
maxsize-1 a1 a2 a3 sq
01
2
3
↑top
①a3,a1,a4,a2
②aHale Waihona Puke Baidu,a2,a4,a1
③ a3,a4,a2,a1
④a4,a3,a2,a1
4.一个栈的入栈序列是a,b,c,d,e,则栈的不可能的输出序列是
(③ )
①edcba
②d e c b a
e = _____________; (*(S.top-1) ) return OK; } 10.在队列中,新插入的结点只能添加到________________,被删 除的只能是排在________________的结点。(队尾,队头) 11.顺序队列的出、入队操作会产生“________________”。(假上 溢) 12.以下运算实现在循环队列上的初始化,请在_______________处 用适当句子予以填充。
适当句子予以填充。 Status DeQueue(SqQueue &Q , QElemType &e) { if (______________) ( Q.front == Q.rear) return ERROR; e = Q.base[Q.front]; Q.front = ____________________; ( (Q.front+1) % MAXQSIZE
Status InitStack(SqStack &S)
{ S.base
=
(SElemType
*)malloc(STACK_INIT_SIZE*sizeof(SElemType));
if (!S.base) exit(OVERFLOW);
S.top = _ _______; (S.base)
S.stacksize = ____________; (STACK_INIT_SIZE)
第三章 栈、队列
1、 填空题 1. 在栈顶进行插入运算,被称为_______,在栈顶进行删除运 算,被称为______。(压栈push,出栈pop) 2. 对于顺序栈,若栈顶下标值top=0,此时,如果作出栈运算,则 产生“________”。(下溢) 3. 栈和线性表类似有两种实现方法,即________实现和 ________实现。(顺序,链接) 4. 以下运算实现在顺序栈上的初始化,请在________处用适当 的句子予以填充。
int StackEmpty (SqStack &S) { return ________________ ; ( S.top == S.base ) } 9.以下运算实现在顺序栈上取栈顶元素,请在________________处用 适当句子予以填充。
Status GetTop(SqStack S,SElemType &e) { if (_____________) return ERROR; ((S.top == S.base) )
Status EnQueue(SqQueue &Q , QElemType e) { if( ________________ ) ( Q.front == (Q.rear+1) % MAXQSIZE )
return ERROR; Q.base[Q.rear] = e; Q.rear = ____________________; ( (Q.rear+1) % MAXQSIZE ) return OK; } 14. 以下运算实现在循环队列上的出队列,请在_____________处用
return ERROR; e = Q.base[Q.front];
return OK; } 17.___________可以作为实现递归函数调用的一种数据结构。 (栈)
二、单项选择题
1.如果以链表作为栈的存储结构,则退栈操作
(②)
①必须判别栈是否满 ②必须判别栈是否空
③判别栈元素的类型 ④对栈不做任何操作
Status InitQueue(SqQueue &Q) { Q.base=(QElemType*)malloc(MAXQSIZE *sizeof(QElemType)); if ___________ exit(OVERFLOW); ( (!Q.base) ) Q.front = Q.rear = _________; ( 0 ) return OK; } 13. 以下运算实现在循环队列上的入队列,请在____________处用请 适当句子予以填充。
if (________) exit(OVERFLOW); ( (!S.base) ) S.top = _______________; (S.base + S.stacksize) S.stacksize = _____________________; (S.stacksize + STACKINCREMENT) } *S.top ++= e; return OK; } 6. 以下运算实现在顺序栈上的出栈,请在________________用 适当句子予以填充。
return OK:
}
5. 以下运算实现在顺序栈上的进栈,请在________处用适当的
语句予以填充。
Status Push(SqStack &S,SElemType e) { if (S.top-S.base>=S.stacksize)
{ S.base = (SElemType *)realloc(S.base, (S.stacksize+STACKINCREMENT)*sizeof(SElemType));