栈和队列的共同点是_数据结构第三章栈和队列习题及答案

2e9013805f56fe279260896f31519580.png

栈和队列

一 单项选择题

1. 在作进栈运算时,应先判别栈是否(①),在作退栈运算时应先判别栈是否(②)。当栈中元素为n个,作进栈运算时发生上溢,则说明该栈的最大容量为(③)。

①, ②: A. 空       B. 满        C. 上溢      D. 下溢      

     ③: A. n-1     B. n         C. n+1       D.  n/2

2.若已知一个栈的进栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,...,pn,若p1=3,则p2为(   )。

A .可能是2        B.一定是2          

C.可能是1         D.一定是1

3. 有六个元素6,5,4,3,2,1 的顺序进栈,问下列哪一个不是合法的出栈序列?(    )

A. 5 4 3 6 1 2     B. 4 5 3 1 2 6     

C. 3 4 6 5 2 1     D. 2 3 4 1 5 6

4.设有一顺序栈S,元素s1,s2,s3,s4,s5,s6依次进栈,如果6个元素出栈的顺序是s2,s3,s4, s6 , s5,s1,则栈的容量至少应该是 (    )

A.2            B. 3             C. 5              D.6

5. 若栈采用顺序存储方式存储,现两栈共享空间V[1..m],top[i]代表第i个栈( i =1,2)栈顶,栈1的底在v[1],栈2的底在V[m],则栈满的条件是(    )。

A. |top[2]-top[1]|=0      

B. top[1]+1=top[2]    

C. top[1]+top[2]=m        

D. top[1]=top[2]

6. 执行完下列语句段后,i值为:(    )

     int   f(int x)

     { return  ((x>0) ? x* f(x-1):2);}

      int i  ;

      i =f(f(1));

A.2      B. 4       C. 8       D. 无限递归

7. 表达式3* 2^(4+2*2-6*3)-5求值过程中当扫描到6时,对象栈和算符栈为(   ),其中^为乘幂。

A. 3,2,4,1,1;(*^(+*-             B. 3,2,8;(*^-    

C. 3,2,4,2,2;(*^(-               D. 3,2,8;(*^(-

8. 用链接方式存储的队列,在进行删除运算时(    )。

A. 仅修改头指针           

B. 仅修改尾指针    

C. 头、尾指针都要修改          

D. 头、尾指针可能都要修改

9. 递归过程或函数调用时,处理参数及返回地址,要用一种称为(    )的数据结构。

A.队列            B.多维数组           

C.栈               D. 线性表

10.设C语言数组Data[m+1]作为循环队列SQ的存储空间, front为队头指针,rear为队尾指针,则执行出队操作的语句为(    )

A.front=front+1                 

B. front=(front+1)% m

C.rear=(rear+1)%(m+1)           

D. front=(front+1)%(m+1)

11.循环队列的队满条件为  (  )

A. (sq.rear+1) % maxsize ==(sq.front+1) % maxsize;

B. (sq.front+1) % maxsize ==sq.rear

C. (sq.rear+1) % maxsize ==sq.front

D.sq.rear ==sq.front

12. 栈和队列的共同点是(    )。

A. 都是先进先出                                   

B. 都是先进后出   

C. 只允许在端点处插入和删除元素        

D. 没有共同点

二 填空题

1.栈是_______的线性表,其运算遵循_______的原则。 

2. 一个栈的输入序列是:1,2,3则不可能的栈输出序列是_______。

3.用S表示入栈操作,X表示出栈操作,若元素入栈的顺序为1234,为了得到1342出栈顺序,相应的S和X的操作串为_______。

4. 循环队列的引入,目的是为了克服_______。  

5.队列是限制插入只能在表的一端,而删除在表的另一端进行的线性表,其特点是_______。

6. 已知链队列的头尾指针分别是f和r,则将值x入队的操作序列是_______。

7.表达式求值是_______应用的一个典型例子。

8.循环队列用数组A[0..m-1]存放其元素值,已知其头尾指针分别是front和rear ,则当前队列的元素个数是_______。

9. 以下运算实现在链栈上的初始化,请在________________处用请适当句子予以填充。

Void InitStacl

(LstackTp *ls){ ________________;}

10.以下运算实现在链栈上的进栈,请在处用请适当句子予以填充。

Void Push(LStackTp *ls,DataType x)

{LstackTp *p;p=malloc(sizeof(LstackTp));

       ________________;

       p->next=ls;

       ________________; }

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

Int Pop(LstackTp *ls,DataType *x)

    {LstackTp *p;

     if(ls!=NULL)

         { p=ls;

           *x=________________;

           ls=ls->next;

           ________________;

           return(1);

         }else return(0); }

12. 以下运算实现在链队上的入队列,请在________________处用适当句子予以填充。

Void EnQueue(QueptrTp *lq,DataType x)

     { LqueueTp *p;

p=(LqueueTp *)malloc(sizeof(LqueueTp));

       ________________=x;

       p->next=NULL;

       (lq->rear)->next=________________;

        ________________ }

栈和队列答案

一  单项选择题

1. B A B

2. A

3. C

4.B

5. B

6. B

7. D

8. D

9. C

10.D

11.C

12. C

二、填空题 

1.操作受限(或限定仅在表尾进行插入和删除操作)      后进先出

2. 3 1 2

3.S×SS×S××   

4. 假溢出时大量移动数据元素  

5.先进先出

6. s=(LinkedList)malloc(sizeof(LNode));s->data=x;s->next=r->next;r->next=s;r=s;

7.栈

8.(rear-front+m)% m;

9.ls=NULL

10. p->data=x,         ls=p

11.p->data,        free(p)

12. p->data,      p,       lq->rear=p

电话:15580803430 颜老师

QQ:2875332587

地址:湖南财政经济学院西门

官网:www.hnqrzzsb.com(湖南专升本信息网)

扫码添加老师 了解更多升本咨询 b520b63c95d859d585f815864bf2acb0.png def9a699231082a88b293a2a160bd30e.png
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值