CLSR 11 1直接定址表

2021-07-05 09:01:11 字數 1412 閱讀 4909

11.1-1

從直接定址表底部向上搜尋,找到第乙個非空槽即是最大元素。最壞情況下是 θ(

m)。11.1-2

位向量的每一位代表乙個元素是否存在(用1和0表示)。為了修改或者查詢位向量需要用到 &、| 等操作。

11.1-3

使用雙鏈表來解決衝突,特別的對於搜尋操作,題目也沒說清楚就預設是返回第乙個元素。

11.1-4

按照書上的提示,我們有乙個類似於棧的陣列

s ,其大小應該是字典元素的最大個數,另外還有乙個 to

p[s]

指標,我們存放在 s[

0]中,所以 s[

1..t

op[s

]]是有效的。

假設現在有乙個關鍵字

k 儲存在陣列(我們取名為 t),

t[k]

存放陣列

s 中的索引,設 t[

k]=j

,則在陣列 s[

j]中存放的是關鍵字

k 。舉個栗子,設關鍵字存放在陣列

t的下標為

5 的位置,且 t[

5]=3

,則在陣列

s 中有 s[

3]=5

。 另外由於陣列

s 小於陣列

t,我們可以附加乙個和陣列

s 一樣大的陣列 s′

,用於存放指向物件。現在有乙個有效的物件

x ,它的關鍵字為 k,則

s′[t

[k]]

指向 x 。

現在對於search,給乙個關鍵字

k,我們驗證 1≤

t[k]

≤top

[s] 以及 s[

t[k]

]=k ,如果是的就返回 s′

[t[k

]],否則返回空。

對於insert,假設關鍵字不在字典中,我們增加 to

p[s]

,然後 s[

top[

s]]=

k,s′

[top

[s]]

=k,t

[k]=

top[

s]。

對於delete,假設關鍵字在字典中,我們打破「有效的迴圈」,然後填補刪除操作的空缺即可。s[

t[k]

]←s[

top[

s]]s

′[t[

k]]←

s′[t

op[s

]]t[

s[t[

k]]]

←t[k

]t[k

]←0t

op[s

]←to

p[s]

−1

直接定址表

1 描述了單元長度的標號 後面沒有冒號的標號可以同時描述記憶體位址和單位長度。因為這種標號包含了對單元長度的描述,所以,在指令中,它可以代表乙個段中的記憶體單元。稱為資料標號。2 一般來說,我們不會在 段中定義資料,而是將資料定義到其他段中。注意 1.在後面加有 的位址標號,只能在 段中使用,不能在...

直接定址表

這篇文章中,我們將討論如何有效合理的組織資料,以及相關的程式設計技術.一 描述了單元長度的標號 首先,我們來看乙個簡單的例子 assume cs code code segment a db 1,2,3,4,5,6,7,8,9 b dw 0 start mov si,offset a mov di,...

直接定址表

1.資料標號 關於標號 在彙編 中,可以用標號表示該段 的記憶體位址 標號格式為,標號名加冒號 start 例如 下面的 中 start 就是標號 start mov ax,0 mov bx,ax 關於資料標號 普通的標號只能表示記憶體位址 資料標號即可表示記憶體位址,也可表示記憶體單元的長度 使用...