《数据结构练习题》栈和队列
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
栈和队列
1 简述栈和线性表的区别。
2 简述栈和队列这两种数据结构的相同点和不同点。
3 如果进栈的元素序列为A,B,C,D,则可能得到的出栈序列有多少种?写出全部的可能序列。
4 如果进栈的元素序列为1,2,3,4,5,6,能否得到4,3,5,6,1,2和1,3,5,4,2,6的出栈序列?并说明为什么不能得到或如何得到。
5 写出下列程序段的运行结果(栈中的元素类型是char):
main( )
{
SEQSTACK s,*p;
char x, y;
p = &s;
initstack(p);
x = ′c′; y = ′k′;
push(p,x); push(p,′a′); push(p,y);
x = pop(p);
push(p,′t′); push(p,x);
x = pop(p);
push(p,′s′);
while(!empty(p))
{ y = pop(p);
printf(″%c″,y);}
printf(″%c\n″,x);
}
6 将一个非负十进制整数转换成二进制数,用非递归算法和递归算法来实现。
7 写一算法将一顺序栈中的元素依次取出,并打印元素值。
8 设单链表中存放着n个字符,试编一算法,判断该字符串是否有中心对称关系,例如xyzzyx,xyzyx都算是中心对称的字符串。
9 写出下列程序段的运行结果(队列中的元素类型是char):
main( )
{
SEQQUEUE a, *q;
char x, y;
q = &a;
x=′e′; y=′c′;
initqueue(q);
enqueue(q,′h′); enqueue(q,′r′); enqueue(q,y);
x = dequeue(q);
enqueue(q,x);
x = dequeue(q);
enqueue(q,′a′);
while(!empty(q))
{ y = dequeue(q);
printf(″%c″,y);}
printf(″%c\n″,x);
}
10 写一算法将一链队列中的元素依次取出,并打印这些元素值。