雜湊表(Hash table,也叫哈希表),是根據關鍵碼值(Key value)而直接進行查詢的資料結構。也就是說,它通過把關鍵碼值映射到表中一個位置來查詢記錄,以加快查找的速度。這個映射函數叫做雜湊函數,存放記錄的數組叫做雜湊表。
以上資料引用自維基百科
現在想請你模擬出一個簡單的 Hash Table
把所有數字經由 mod m 分成 m 個區間
每次給你一個數字 N
有三個操作依下列所示
操作 1: 將數字 N mod m 存入 Hash Table
操作 2: 將數字 N 從 Hash Table 中釋放(刪除)
操作 3: 將整個 Hash Table 輸出
有多筆測資,每組第一行有兩個數字 k, m (1 ≦ k ≦ 10,0000, 1 ≦ m ≦ 200)
分別代表接下來有 k 筆操作, 模數 m
接下來的每一行
若第一個數字為 1, 則接下來會一個數字 N,將這個數字插入 Hash Table
若第一個數字為 2, 則接下來會一個數字 N,將這個數字從 Hash Table 刪除
若第一個數字為 3, 則輸出整個 Hash Table
0 ≦ N < 231-1
13 5 1 17 1 8 3 3 1 18 1 24 3 1 37 1 64 1 84 3 2 18 3
===== s ===== [000]:NULL [001]:NULL [002]:17 -> NULL [003]:8 -> NULL [004]:NULL ===== e ===== ===== s ===== [000]:NULL [001]:NULL [002]:17 -> NULL [003]:8 -> NULL [004]:NULL ===== e ===== ===== s ===== [000]:NULL [001]:NULL [002]:17 -> NULL [003]:8 -> 18 -> NULL [004]:24 -> NULL ===== e ===== ===== s ===== [000]:NULL [001]:NULL [002]:17 -> 37 -> NULL [003]:8 -> 18 -> NULL [004]:24 -> 64 -> 84 -> NULL ===== e ===== ===== s ===== [000]:NULL [001]:NULL [002]:17 -> 37 -> NULL [003]:8 -> NULL [004]:24 -> 64 -> 84 -> NULL ===== e =====
× 若在存入時,發現數字重複,則不予理會
× 若在刪除時,發現數字不存在,則不予理會
× 循序不可
× 此題與 a174: 上帝玩不玩骰子 略有不同
題目由 example 編輯