使用hash原理,模擬資料庫儲存資料,直接操作記憶體編輯資料,
package main
import
("errors"
"fmt"
"os"
)//hash鍊錶的基本使用
//思路
//1、建立乙個hash結構體,裡面儲存自己自定義數量的鍊錶陣列
//2、建立乙個鍊錶,用來儲存使用者資料
//3、每次插入前先計算插入的哪乙個陣列,根據id從小到大依次插入,這樣做是為了查詢快
//定義方法
type hashfunc inte***ce
//使用者資料鏈表
type link struct
//hashtable
type hashtable struct
func
(this *link)
publish
(link *link)
(*link,
error
)//插入的元素小於第乙個元素時
tmp := this
if this.id > link.id
else
if tmp.next.id < link.id
else
} link.next = tmp.next
tmp.next = link
}return this,
nil}
//獲取插入表id
func
gethashindex
(id int
)int
//新增元素方法
func
(this *hashtable)
push
(link *link)
error
this.table[index]
= k return
nil}
//查詢方法
func
(this *hashtable)
find
(id int)(
*link,
error
) tmp := this.table[index]
forelse
else}}
}//刪除方法
func
(this *hashtable)
del(id int
)error
//判斷第乙個元素是否等於需要刪除的元素
if tmp.id == id
//第乙個元素不等於需要刪除的元素,所以從第二個開始查詢
forif tmp.next.id == id
else}}
//修改方法
func
(this *hashtable)
update
(id int
,name string
)error
forif tmp.next !=
nilelse
}return errors.
new(
"id is not find")}
//檢視所有元素
func
(this *hashtable)
each()
forelse
} fmt.
println
("------------------------------------")}
}func
main()
hashtale.table =
&table
link :=
&link
fmt.
println
("程式已啟動。。。"
)var flag int
forswitch flag
res, err := hashtale.
find
(link.id)
if err !=
nilelse
case3:
fmt.
print
("成員id:")_
, err := fmt.
scan
(&link.id)
if err !=
nil fmt.
print
("成員name:")_
, err = fmt.
scan
(&link.name)
if err !=
nilif err := hashtale.
update
(link.id,link.name)
;err !=
nilcase4:
fmt.
print
("成員id:")_
, err := fmt.
scan
(&link.id)
if err !=
nilif err := hashtale.
del(link.id)
;err !=
nilcase5:
fmt.
print
("成員id:")_
, err := fmt.
scan
(&link.id)
if err !=
nil fmt.
print
("成員name:")_
, err = fmt.
scan
(&link.name)
if err !=
nilif err := hashtale.
push
(link)
;err !=
nilelse
case0:
os.exit(0
)}fmt.
println()
}}
雜湊(hash 雜湊表)
可以認為雜湊有著陣列的思想,它將所有的資料段拼成乙個陣列 順序表 進行儲存,通過雜湊函式,可以基本上以o 1 的時間複雜度來查詢和儲存資料。通過資料段中的唯一關鍵字 key 經過某種演算法,得出此資料段在整個雜湊陣列 順序表 中的的下標,然後直接取元素即可。有資料結構如下 資料段 key,value...
Hash表(雜湊表 雜湊表)
雜湊函式 乙個把查詢表中的關鍵字對映成該關鍵字對應的位址的函式,記為hash key addr。位址可以是陣列下標,索引,或記憶體位址等 衝突 雜湊函式可能會把兩個和兩個以上的不同關鍵字對映到同一位址。衝突不可避免,所以要設計好的處理衝突的方法。同義詞 發生碰撞的不同關鍵字為同義詞。雜湊表 根據關鍵...
Hash和雜湊 雜湊 表
hash又稱為雜湊,是把任意長度的輸入 又叫做預對映pre image 通過雜湊演算法變成固定長度的輸出,該輸出就是雜湊值。hash演算法還有乙個特點,就是很難找到逆向規律。在同一函式下,如果兩個雜湊值是不相同的,那麼這兩個雜湊值的原始輸入也是不同的。hash演算法又被稱為雜湊演算法。雖然被稱為演算...