A. 抽象数据类型 B. 逻辑结构 C. 存储结构 D. 运算 [Solution] 栈和队列具有相同的逻辑结构,即线性逻辑结构, $therefore B$??.
8. 向一个栈顶指针为top的链栈中插入一个x结点,则执行( )。
A. top->next=top; B. x->next=top->next;top->next=x; C. x->next=top;top=x; D. x->next=top;top=top->next; [Solution] 链栈采用不带头结点的单链表表示时,进栈操作在首部插入一个结点x(x->next=top;),再将top指向该插入的结点(top=x;) Push时,先让top与新结点联系上,再进行插入。如顺序栈的Push:top先+1,后插入;链栈的Push:x->next = top; top = x; $therefore B$??.
9. 链栈执行Pop操作,并将出栈的元素存在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; [Analysis] 出栈时,应该元素先出栈,top再-1。即x=top->data;top=top->next; $therefore D$??.
11. 3个不同元素进栈,能得到( )种不同的出栈序列。
A. 4 B. 5 C. 6 D. 7 [Analysis] 出栈序列的个数=卡特兰(Catalan)数=
组合数=
$therefore B$??.
19. 一个栈的输入序列是1,2,3…,n,输出序列的第一个元素是i,则第j个输出元素是( )。
A. i-j+1 B. i-j C. j-i+1 D. 不确定 [Analysis] j都不知道是个啥,咋子确定嘛。 $therefore D$??.
A. n-3 B. n-2 C. n-1 D. 无法确定 [Analysis] (1) $p_3$为3之后的数,即4,5,…,n都是可能取的数; (2) $p_3$为3之前的数,即1或2:当$p_3$为2时,$p_1$为1,很合理;当$p_3$为1时,$p_1$就应该为2(2先出去了)。 故$p_3$可去除了3以外的所有数,即n-1个。 $therefore C$??.