数据结构与算法-Chapter3-栈和队列-练习题

选择题

1.一个栈的入栈序列是a,b,c,d,e,则栈的不可能的输出序列是( )。
A. edcba B. decba C.dceab D.abcde。

2.栈结构通常采用的两种存储结构是( )。
A. 顺序存储结构和链表存储结构 B.散列方式和索引方式
C.链表存储结构和数组 D.线性存储结构和非线性存储结构

3.栈的特点是( B ),队列的特点是( A )。
A. 先进先出 B.先进后出

4.一个队列的入列序列是1,2,3,4,则队列的输出序列是( )。
A. 4,3,2,l B. 1,2,3,4 C.l,4,3,2 D.3,2,4,l

5.判定一个循环队列 QU(最大空间是 mo)为空的条件是( )。
A. QU.front == QU.rear
B. QU.front !=QU.rear
C.QU.front ==(QU.rear+l)%mo
D.QU.front!=(QU.rear+1)%mo

6.判定一个循环队列QU(最大空间是mo)为满队列的条件是( )。
A.QU.front == QU.rear
B.QU.front != QU.rear
C.QU.front ==(QU.rear+l)%mo
D.QU.front !=(QU.rear+l)%mo

7.循环队列用数组 A[0,m-l]存放其元素值,已知其头尾指针分别是 front和 rear,则当前队列中的元素个数是( )。
A.(rear-front+m)% m B. rear-front + 1
C.rear-front-1 D. rear-front

8.栈和队列的共同点是( )。
A.都是先进后出 B.都是先进先出
C.只允许在端点处插入和删除元素 D.没有共同点

9.向一个栈顶指针为 top的链栈中插入一个S所指结点时,则执行( )。
A .top->next=s; B.s->next=top->next; top->next=s;
C. s->next=top;top=s; D. s->next=top;top=top->next;

10.从一个栈顶指针为top的链栈中删除一结点时,用X保存被删结点的值,则执行( ).
A. x=top;top=top->next; B. x=top->data;
C. top=top->next;x=top->data; D. x=top->data;top=top->next

11.在链队列中,设front和rear分别为队首和队尾指针,插入s所指结点的运算为( )。
A . front->next=s; front=s; B. rear->next=s;rear=s;
C. s->next=rear;rear=s; D. s->next=front;front=s;

12.在链队中,设front和rear分别为队首和队尾指针,则删除一个结点的运算为( )。
A. rear=front->next; B. rear=rear->next;
C. front=front->next; D. front=rear->next

13.插入和删除只能在一端进行的线性表,称为()。
A.队列 B.循环队列 C.栈 D.循环栈

14.在栈中,出栈操作的时间复杂度为()。
A. O(1) B.O(log2n) C.O(n) D.O(n2)

15.设长度为n的单循环链队列,若只设头指针,则入队操作的时间复杂度为()。
A. O(1) B.O(log2n) C.O(n) D.O(n2)

16.设长度为n的单循环链队列,若只设尾指针,则出队操作的时间复杂度为()。
A. O(1) B.O(log2n) C.O(n) D.O(n2)

填空题

1. 线性表、栈和队列都是( 线性)结构,可以在线性表的(任何)位置插入和删除元素;对于栈只能在( 栈顶 )插入和删除元素;对于队列只能在( 队尾)插入元素和( 对头 )删除元素。

2.向顺序栈中压入元素的操作是(判断栈是否已满,如果未满,将元素存入栈顶指针指向的存储位置,栈顶指针增一 ;否则先增加栈的空间,然后压栈。 )。向链栈中压入元素的操作是(压入元素的指针指向链栈的头指针,再修改链栈的头指针指向刚压入的元素 )。

3.对顺序栈进行出栈时的操作是(如果栈空,出栈失败;否则,栈顶指针减一,并将栈顶指针指向的元素取出)。对链栈进行出栈时的操作是(如果栈空,出栈失败;否则,取出栈顶指针指向的元素,并将栈顶指针指向下一个元素)。

4.在一个循环队列中,队首指针指向队首元素的( 存储位置 )。

5.从循环队列中删除一个元素时,其操作是( 如果队列空,删除失败;否则,取出队首指针指向的元素,然后修改队首指针指向下一个元素的存储位置)。

6.在具有n个单元的循环队列中,队满时共有( n-1 )个元素。

7.一个栈的输入序列是12345,则栈的输出序列43512是( 错误的 )。

8.一个栈的输入序列是12345,则栈的输出序列12345是(正确的)。

9.在有n个元素的栈中,进栈和出栈操作的时间复杂度为( O(1) )和(O(1) )。

10.设长度为n的链队列用单循环链表表示,若只设头指针,则入队和出队操作的时间复杂度分别为(O(n) )和( O(1) );若只设尾指针,则人队和出队操作的时间复杂度分别为( O(1))和( O(1) )。 11.在循环队列中,设队头指针front指向队头元素的前一个位置,队尾指针rear指向队尾元素。
(1) 在循环队列中,队空标志为( Q.rear==Q.front );队满标志为( (Q.rear+1)%maxsize == Q.front )。
(2)当rear>=front时,队列长度为( Q.rear-Q.front 或 (Q.rear-Q.front+ m ) % m ) ;当 rear< front时,队列长度是( (Q.rear-Q.front+ m ) % m )( 设循环队列长度为m)。

11.在顺序队列中,为了避免(假溢出)现象引入了循环队列的概念。其入队和出队操作为( Q.base[Q.rear]=e;Q.rear=(Q.rear+1)%maxsize )
和 ( e=Q.base[Q.front];Q.front=(Q.front+1)%maxsize )。

发布了391 篇原创文章 · 获赞 650 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/weixin_43896318/article/details/104092680