数据结构-第三章-栈、队列和数组

275 阅读3分钟

错题

问:设链表不带头结点且所有操作均在表头进行,则下列最不适合作为链栈的是

  • A、只有表头结点指针,没有表尾指针的双向循环链表
  • B、只有表尾结点指针,没有表头指针的双向循环链表
  • C、只有表头结点指针,没有表尾指针的单向循环链表
  • D、只有表尾结点指针,没有表头指针的单向循环链表

答:C。原因如下:

  1. 链栈的特点是在栈顶进行插入和删除操作,因此需要能够快速访问到栈顶元素。而对于只有表尾结点指针的双向循环链表,要获取到表头元素需要从表尾遍历整个链表,效率较低。
  2. 在双向循环链表中,如果只有表尾结点指针,没有表头指针,则无法方便地进行从表头插入和删除操作,需要遍历整个链表找到表头元素才能进行操作。

相比之下,选项A、只有表头结点指针,没有表尾指针的双向循环链表、选项C、只有表头结点指针,没有表尾指针的单向循环链表、选项D、只有表尾结点指针,没有表头指针的单向循环链表都可以较方便地在表头进行插入和删除操作,适合作为链栈的实现方式。

问:一个栈的入栈序列为1,2,3,...,n,其出栈序列是p1,p2 ,p3 ,...pn。若p2=3,则p3可能取值的个数是?

答:n-1个

首先,栈的先进后出原则大家应该是知道的。根据题意p2=3,可以知道p1的可能情况有三种:1,2或4。为啥这样想呢?这里估计还有一个关键是要考虑到 n 的大小

当n=3时,p2=3的话,那么p1有两种情况1和2。

  • 如果 p1=1,那么p3=2;
  • 如果 p1=2,那么p3=1;

此时的话我们就可以看到p3只有两种可能1或者2(n - 1)个。

当n>3时:p2=3的话,那么p1有三种情况1,2和4。

  • 如果p1=1,那么p3=2,4,5,...n(n - 2)个
  • 如果p1=2,那么p3=1,4,5,...n (n - 2)个
  • 如果p1=4,那么p3=2,5,6,... n (n - 3)个

此时的话我们就可以看到p3的情况有 1,2,4,5,... n (n - 1)个。

综上所述就是p3可能取值的个数是(n - 1)个。

问:一个栈的输入序列为1,2,3,...,n,输出序列的第一个元素是i,则第j个输出元素是?

答:不确定。 当第i个元素第一个出栈时,则i之前的元素可以依次排在i之后出栈,但剩余的元素可以在此时进栈并且也会排在i之前的元素出栈,所以第j个出栈的元素是不确定的。