A.s->next=p+1; p->next=s;
B.(*p).next=s; (*s).next=(*p).next;
C.s->next=p->next; p->next=s->next;
D.s->next=p->next; p->next=s;
答案:D
(14) 在双向链表存储结构中,删除 p 所指的结点时须修改指针( )。
A.p->next->prior=p->prior; p->prior->next=p->next;
B.p->next=p->next->next; p->next->prior=p;
C.p->prior->next=p; p->prior=p->prior->prior;
D.p->prior=p->next->next; p->next=p->prior->prior;
答案:A
(15) 在双向循环链表中,在 p 指针所指的结点后插入 q 所指向的新结点,其修改指针的操作是(
)。
A.p->next=q; q->prior=p; p->next->prior=q; q->next=q;
B.p->next=q; p->next->prior=q; q->prior=p; q->next=p->next;
C.q->prior=p; q->next=p->next; p->next->prior=q; p->next=q;
D.q->prior=p; q->next=p->next; p->next=q; p->next->prior=q;
答案:C
第 3 章 栈和队列
1.选择题
(1)若让元素 1,2,3,4,5 依次进栈,则出栈次序不可能出现在( )种情况。
A.5,4,3,2,1 B.2,1,5,4,3 C.4,3,1,2,5
D.2,3,5,4,1
答案:C
解释:栈是后进先出的线性表,不难发现 C 选项中元素 1 比元素 2 先出栈,违背了栈的后进先
出原则,所以不可能出现 C 选项所示的情况。
(2)若已知一个栈的入栈序列是 1,2,3,…,n,其输出序列为 p1,p2,p3,…,pn,若
p1=n,则 pi 为( )。
A.i B.n-i C.n-i+1 D.不确定
答案:C
解释:栈是后进先出的线性表,一个栈的入栈序列是 1,2,3,…,n,而输出序列的第一个元
素为 n,说明 1,2,3,…,n 一次性全部进栈,再进行输出,所以 p1=n,p2=n-1,…,pi=n-i+1。
(3)数组Q[n]用来表示一个循环队列,f为当前队列头元素的前一位置,r为队尾元素的位
置,假定队列中元素的个数小于n,计算队列中元素个数的公式为( )。
A.r-f B.(n+f-r)%n C.n+r-f D.(n+r-f)%n
答案:D
解释:对于非循环队列,尾指针和头指针的差值便是队列的长度,而对于循环队列,差值可能
为负数,所以需要将差值加上 MAXSIZE(本题为 n),然后与 MAXSIZE(本题为 n)求余,即(n+r-f)
%n。
(4)链式栈结点为:(data,link),top 指向栈顶.若想摘除栈顶结点,并将删除结点的值保存到 x 中,
则应执行操作( )。
A.x=top->data;top=top->link; B.top=top->link;x=top->link;
C.x=top;top=top->link; D.x=top->link;
答案:A
评论0