資料結構 字典

2021-09-13 02:58:22 字數 2543 閱讀 2967

字典是一種以

鍵 -

值 對形式儲存結構的資料結構, 就像**號碼薄裡的名字和**號碼一樣. 要找乙個**時, 先找名字, 名字找到了, 緊挨著它的**號碼也就找到了. 這裡的

鍵 是指你用來查詢的東西,

值 是查詢得到的結果.

jsobject類就是以字典形式設計的. 本章將使用object類本身的特性, 實現乙個dictionary類, 讓這種字典型別的物件使用起來更加簡單. 你也可以只使用陣列和物件來實現本章展示的方法, 但是定義乙個dictionary類更方便, 也更有意思. 比如, 使用()引用鍵就比使用簡單. 當然, 還有其他一些便利, 比如可以定義對整體進行操作的方法, 舉個栗子, 顯示字典中所有的元素, 這樣就不必在主程式中迴圈去遍歷字典了.

dictionary類是基礎是array類, 而不是object類. 本章稍後將提到, 我們想對字典中的鍵排序, 而js中是不能對物件的屬性進行排序的. 但是也不要忘記,js中一切皆物件, 陣列也是物件.

window.log = console.log.bind(console)

class dictionary

add(key, value)

find(key)

remove(key)

showall() ===>>> $`)})}

};const pbook = new dictionary();

pbook.add('作家1', '書1');

pbook.add('作家2', '書2');

pbook.add('作家3', '書3');

pbook.add('作家4', '書4');

pbook.showall();

log('

')pbook.remove('作家3');

pbook.showall();

add()方法接受兩個引數: 鍵和值. 鍵是值在字典中索引.

find()方法以鍵為引數, 返回和其相關聯的值.

remove()方法用到了js中的乙個內建函式:delete.該函式是object類的一部分, 使用對鍵的引用作為引數. 該函式同時刪掉鍵和與其關聯的值.

showall()方法顯示字典中所有的鍵值對.

我們還可以定義一些在特定情況下用的輔助方法.

...

count() );

return n;

}clear() );

}...

比如, 要是能知道字典中的元素個數就好了, 那麼就可以定義乙個count()方法.

這裡你可能就要問了, 既然_datastore是陣列型別的話為什麼不直接用length屬性呢? 這是因為當鍵的型別為字串時,length屬性就不管用了. eg:

const nums = ;

nums[0] = 1;

nums[1] = 2;

log(nums.length); // 2

const book = ;

book['a'] = 1;

book['b'] = 2;

log(book.length); // 0

以及清空字典clear(). 這裡使用this._datastore =也是可以的;

字典的主要用途是通過鍵取值, 我們無需太關心資料在字典中的實際儲存順序. 然而, 很多人都希望看到乙個有序的字典. 下面來看看如何讓前面的字典按順序顯示.

陣列是可以排序的, eg:

const a = ;

a[0] = 'm';

a[1] = 'd';

log(a); // m d

a.sort();

log(a); // d m

但是上面的這種做法是對字串作為鍵的字典無效的, 程式會沒有任何輸出. 這和我們前面定義count()方法時情況一致;

不過這也不是大問題. 使用者關心的是顯示字典的內容時, 結果是有序的. 可使用object.keys()函式解決這個問題, 重新定義showall()方法:

showall()   ===>>>   $`)

})}

和前面的區別是: 拿到_datastore的鍵後, 呼叫sort()方法對鍵重新排序.

資料結構 字典

宣告 本文為學習資料結構與演算法分析 第三版 clifford a.shaffer 著的學習筆記,有參考該書的示例 碎碎語 其實我一直對這個資料結構不是很了解。字典 dictionary 作為資料庫的乙個簡單介面,提供在資料庫中儲存 查詢和刪除記錄的可能。字典中有定義關鍵碼 search key 的...

資料結構 字典

字典使用雜湊表作為底層實現,乙個雜湊表裡面可以有多個雜湊表節點,而每個雜湊表節點就儲存了字典中的乙個鍵值對 雜湊表由dict.h dictht結構定義 typedef struct dictht dictht table 是乙個陣列,裡面每個元素都是乙個指向dict.h dictentry結構的指標...

資料結構 字典dict

字典內的元素是由鍵值對組成,每個鍵必須是唯一的。字典具有無序性,故在字典中需要通過鍵來訪問成員。dict1 字典中,鍵是不可變得,與鍵對應的值是可以改變的,可以包含任何其他型別。字典操作 描述dict.copy 複製字典 dict.items 獲取由鍵和值組成的列表list dict.keys 獲取...