1、数据结构,0,1. 对于栈操作数据的原则是( )。 A. 先进先出 B. C. D. 不分顺序 2. 在作进栈运算时,应先判别栈是否( ),在作退栈运算时应先判别栈是否( )。当栈中元素为n个,作进栈运算时发生上溢,则说明该栈的最大容量为( )。为了增加内存空间的利用率和减少溢出的可能性,由两个栈共享一片连续的内存空间时,应将两栈的 ( )分别设在这片内存空间的两端,这样,当( )时,才产生上溢。 , : A. 空 B. 满 C. D. 下溢 : A. n-1 B. n C. n+1 D. n/2 : A. B. 深度 C. 栈顶 D. 栈底 : A. 两个栈的栈顶同时到达栈空间的中心点. B
2、. 其中一个栈的栈顶到达栈空间的中心点. C. 两个栈的栈顶在栈空间的某一位置相遇. D. 两个栈均不空,且一个栈的栈顶到达另一个栈的栈底.,数据结构,1,1.B 2.1.B 2.2.A 2.3B 2.4D 2.5C,数据结构,2,3. 一个栈的输入序列为123n,若输出序列的第一个元素是n,输出第i(1next=null; r-next=s;r=s;,数据结构,20,1、利用两个栈sl,s2模拟一个队列时,如何用栈的运算实现队列的插入,删除以及判队空运算。请简述这些运算的算法思想。,数据结构,21,栈的特点是后进先出,队列的特点是先进先出。初始时设栈s1和栈s2均为空。 (1)用栈s1和s2
3、模拟一个队列的输入:设s1和s2容量相等。分以下三种情况讨论:若s1未满,则元素入s1栈;若s1满,s2空,则将s1全部元素退栈,再压栈入s2,之后元素入s1栈;若s1满,s2不空(已有出队列元素),则不能入队。 (2)用栈s1和s2模拟队列出队(删除):若栈s2不空,退栈,即是队列的出队;若s2为空且s1不空,则将s1栈中全部元素退栈,并依次压入s2中,s2栈顶元素退栈,这就是相当于队列的出队。若栈s1为空并且s2也为空,队列空,不能出队。 (3)判队空 若栈s1为空并且s2也为空,才是队列空。,数据结构,22,讨论:s1和s2容量之和是队列的最大容量。其操作是,s1栈满后,全部退栈并压栈入s2(设s1和s2容量相等)。再入栈s1直至s1满。这相当队列元素“入队”完毕。出队时,s2退栈完毕后,s1栈中元素依次退栈到s2,s2退栈完毕,相当于队列中全部元素出队。 在栈s2不空情况下,若要求入队操作,只要s1不满,就可压入s1中。若s1满和s2不空状态下要求队列的入队时,按出错处理。,数据结构,23,习题集24页3.17Int IsReverse( )/判断输入的字符串中) /IsReverse,