作业ch4-1:
(1)
从主串S的第一个字符’a’开始,与模式串T的第一个字符’b’进行比较,发现不相等。
从主串S的第二个字符’b’开始,与模式串T进行比较,发现前三个字符’b’, ‘a’, 'b’相等,但第四个字符’a’与模式串T的第四个字符’b’不相等。
从主串S的第三个字符’c’开始,与模式串T进行比较,发现第一个字符不相等。
以此类推,直到从主串S的第12个字符’b’开始,与模式串T进行比较,发现五个字符’b’, ‘a’, ‘b’, ‘a’, 'b’全部相等,说明找到了一个匹配。
所以位置是12
(2)
j | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
T[j] | a | b | c | a | a | b | b | c | a | a | a | b | a | b | a | b | a | a | b | c | a |
next[j] | -1 | 0 | 0 | 0 | 1 | 1 | 2 | 0 | 0 | 1 | 1 | 1 | 2 | 1 | 2 | 1 | 2 | 1 | 1 | 2 | 0 |
(3)
S[0]与T[0]不匹配,移动模式串到S[1]。
S[1]与T[0]不匹配,移动模式串到S[2]。
以此类推,一直到S[4]和T[0]不匹配
移动模式串到S[1]
以此类推,当遇到不匹配时,回退到T[next[j]]的位置
作业ch4-2:
1 | Status AddSMatrix(TSMatrix &C, TSMatrix A, TSMatrix B) { |
作业ch4-3:
k=(j-1)*(2n-j+2)/2+(i-j)
作业ch4-4:
(1) A0000的地址为:100 + 2 × (0 × 3 × 5 × 8 + 0 × 5 × 8 + 0 × 8 + 0) = 100
(2) A1111的地址为:100 + 2 × (1 × 3 × 5 × 8 + 1 × 5 × 8 + 1 × 8 + 1) = 284
(3) A3125的地址为:100 + 2 × (3 × 3 × 5 × 8 + 1 × 5 × 8 + 2 × 8 + 5) = 892
(4) A8247的地址为:100 + 2 × (8 × 3 × 5 × 8 + 2 × 5 × 8 + 4 × 8 +7) = 2446
作业ch4-5:
在广义表中,GetHead操作返回广义表的第一个元素,而GetTail操作返回除第一个元素外的剩余部分。所以,对于给定的广义表,我们有:
(1) GetHead((p,h,w)) 的结果是 p。
(2) GetTail((p,h,w)) 的结果是 (h,w)。
(3) GetHead(((a,b),(c,d))) 的结果是 (a,b)。
(4) GetTail(((a,b),(c,d))) 的结果是 ((c,d))。
(5) GetHead(GetTail(((a,b),(c,d)))) 的结果是 (c,d)。
(6) GetTail(GetHead(GetTail(((a,b),(c,d))))) 的结果是 (),因为(c,d)没有尾部。