2.13 建立一个带头结点的线性链表,用以存放输入的二进制数,链表中每个结点的 data 域
存放一个二进制位。并在此链表上实现对二进制数加 1 的运算 。
[提示]:可将低位放在前面。
2.14 设多项式 P(x)采用课本中所述链接方法存储。写一算法,对给定的 x 值,求 P(x)的值。
[提示]:float PolyValue(Polylist p; float x) {……}
第三章 栈和队列
1. 按图 3.1(b)所示铁道(两侧铁道均为单向行驶道)进行车厢调度,回答:
⑴ 如进站的车厢序列为 123,则可能得到的出站车厢序列是什么?
⑵ 如进站的车厢序列为 123456,能否得到 435612 和 135426 的出站序列,并说明原因。
(即写出以“S”表示进栈、以“X”表示出栈的栈操作序列)。
【解答】
(1)可能得到的出站车厢序列是:123、132、213、231、321。
(2)不能得到 435612 的出站序列。
因为有 S(1)S(2)S(3)S(4)X(4)X(3)S(5)X(5)S(6)S(6),此时按照“后进先出”的原则,出栈的顺
序必须为 X(2)X(1)。
能得到 135426 的出站序列。
因为有 S(1)X(1)S(2)S(3)X(3)S(4)S(5)X(5)X(4)X(2)X(1)。
2. 设队列中有 A、B、C、D、E 这 5 个元素,其中队首元素为 A。如果对这个队列重复
执行下列 4 步操作:
(1) 输出队首元素;
(2) 把队首元素值插入到队尾;
(3) 删除队首元素;
(4) 再次删除队首元素。
直到队列成为空队列为止,则是否可能得到输出序列:
(1) A、C、E、C、C (2) A、C、E
(3) A、C、E、C、C、C (4) A、C、E、C
[提示]:
A、B、C、D、E (输出队首元素 A)
A、B、C、D、E、A (把队首元素 A 插入到队尾)
B、C、D、E、A (删除队首元素 A)
C、D、E、A (再次删除队首元素 B)
C、D、E、A (输出队首元素 C)
C、D、E、A、C (把队首元素 C 插入到队尾)
D、E、A、C (删除队首元素 C)
E、A、C (再次删除队首元素 D)
3. 给出栈的两种存储结构形式名称,在这两种栈的存储结构中如何判别栈空与栈满?
4. 按照四则运算加、减、乘、除和幂运算(↑)优先关系的惯例,画出对下列算术表达
式求值时操作数栈和运算符栈的变化过程:
A-B*C/D+E↑F