hash.go
ハッシュパッケージ のインポート( " FMTは" ) のEmp型構造体{ ID INT 名前ストリング 次に * のEmp } // 店舗従業員の最初のノード タイプEmpLinkの構造体{ ヘッド * のEmp } //は、ハッシュテーブルを定義する ハッシュテーブル型のstruct { LinkArr [ 7 ] EmpLinkを } // 従業員を添加する方法 FUNC(EMPL * EmpLink)InsertEmp(EMP * EMP){ CUR: = empl.Headの VAR* = EMPが事前ゼロ IF CUR == nilの{ empl.Head = EMP リターン } // それは空のリストがない場合は、対応する位置を検索し、挿入 のための{ IF CUR!= nilの{ IF cur.ID> = emp.ID { BREAK } 事前 = CUR CUR = cur.Next } 他{ BREAK } } pre.Next = EMP emp.Next = CUR } FUNC(ハッシュ *ハッシュテーブル)を挿入(* EMP EMP){ // 従業員のリストを追加するために決定されるハッシュ関数、 linkNum:= hash.HashFunc(emp.ID) hash.LinkArr [linkNum] .InsertEmp(EMP)を } FUNC(EMPL * EmpLink)findById(IDのint型)* のemp { CUR: = empl.Head ための{ IF CUR = nilの&& cur.ID ==!ID { 戻りCUR } 他の IF CUR == nilの{ BREAK } CUR = cur.Next } リターンゼロ } FUNC(ハッシュ *ハッシュテーブル)を見つける(IDのINT)* のemp { // のどのリストを決定するためにハッシュ関数 linkNum:= hash.HashFunc(ID) リターンhash.LinkArr [linkNum] .FindByID(ID) } / / 方法ハッシュ FUNC(ハッシュハッシュテーブル*)HashFunc(IDのINT)INT { 戻り ID%7 } FUNC(EMPL * EmpLink)ShowLink(NUMのINT ){ IF empl.Head == ゼロ{ fmt.Printf(「現在%dをリストは空です\ N- 」、NUM) リターン } // そうでない場合は、表示データの行き来 =:CUR empl.Headを するために、{ IF!CUR = 無記号{ fmt.Printf(" - >%S:%dの、従業員ID:%dを、従業員名リスト" 、NUM、CUR。 ID、cur.Name) CUR = cur.Next } 他{ BREAK } } fmt.Println( ``) } FUNC(ハッシュ * ハッシュテーブル)を表示(){ 用 I:= 0 ; I <lenの(hash.LinkArr)。 ++ I { hash.LinkArr [I] .ShowLink(I) } } FUNC(EMP* EMP)SHOWME(){ fmt.Printf(" リストは、従業員を見つけること%D%D \ N- "、emp.ID%。7 、emp.ID) }
main.go
主パッケージ のインポート( " FMT " " go_code / data_structure /ハッシュ" " OS " ) FUNCメイン(){ キー: = "" ID: = 0 名: = "" VAR ハッシュテーブルhash.HashTable 用{ fmt.Println(" = =========従業メニュー========== " ) fmt.Println(" INSERTの追加の従業員が表現" ) fmt.Println(" ショーが表示された従業員を表します」) FMT。println( "見つけ従業員は、そのクエリを示している「) fmt.Println(」従業員を終了する終了「) fmt.Printlnを(」:あなたの選択を入力してください「) fmt.Scanln( &キー) スイッチキー{ ケース 」INSERTを「: fmt.Println(」上記IDの上に従業員を入力してください:" ) fmt.Scanln( &上述のID以上) fmt.Println(" 従業員の名前を入力してください:" ) fmt.Scanln( &名) EMP: =&hash.Emp { ID:ID、 名前:名前、 } hashTable.Insert(EMP) ケース " ショー" : hashTable.Show() ケース " 検索" : fmt.Println(" 検索したいIDを入力してください:" ) fmt.Scanln( &ID) EMP: = hashTable.Find(ID) IF EMP == ゼロ{ fmt.Printf(" ID =%N Dスタッフが\存在しない" 、ID) } 他{ // 表示従業員情報 emp.ShowMe() } ケース " 出口" : os.Exit(0 ) } } }
結果:
F:\ goproject \ SRC \ go_code \ data_structure>ゴーRUN main.go
==========従業メニュー==========
INSERTは追加の従業員が表す
表示は、従業員が表す表示され
、従業員は、クエリを表し見つけます
従業員の退出手段出口
あなたの選択を入力してください:
INSERTは、
上述したIDの上の従業員を入力してください:
1
、従業員の名前を入力してください:
ボブ
==========従業メニュー==========
INSERT追加スタッフを表す
ショーをディスプレイは、従業員が表す
クエリスタッフのことを示して見つける
の従業員を終了する終了
:あなたの選択を入力してください
INSERTは、
上述したIDの上の従業員を入力してください:
8
:従業員の名前を入力してください
マイク
========== ========従業員のメニューを==
INSERTは追加の従業員を表す
表示は、従業員が表す表示され
、クエリのスタッフのことを示して見つける
の従業員を終了する終了
あなたの選択を入力してください:
INSERTは、
上述したIDの上の従業員を入力してください:
15
従業員の名前を入力してください:
トム
==========従業メニューを= =========
インサートは、追加スタッフ表し
ショーの表示は、従業員が表す
クエリスタッフのことを示して見つける
の従業員を終了する終了
:あなたの選択を入力してください
インサートは、
上述したIDの上に従業員を入力してください:
57
:従業員の名前を入力してください
POP
========== ===従業員のメニューを=======
INSERTは、追加の従業員が表す
表示は、従業員が表す表示され
、クエリのスタッフのことを示して見つける
の従業員を終了する終了
:あなたの選択を入力してください
表示され
、現在のリストが空0である
リスト:1社員ID:1、名の従業員:bob-- >リスト:1従業員ID:8、従業員名:マイク- >リスト:1従業員ID:15、従業員名:トム- >リスト:1従業員ID:57、従業員名:ポップ- >
現在2リストが空である
現在のリストが空で3
電流4リストが空である
現在の5リストは空である
現在のリストが空6人の
==========従業メニュー==========
INSERTアドスタッフ表現
ショーの表示は、従業員が表す
クエリスタッフのことを示して見つける
の従業員を終了する終了
:あなたの選択を入力してください
INSERTは、
上述したIDの上の従業員を入力してください:
36
:従業員の名前を入力してください
BIBを
==========従業メニュー==========
INSERTが追加従業員を表す
表示は、従業員が表す示し
見つけるクエリスタッフのことを示している
従業員を終了する終了
あなたの選択を入力してください
示して
現在のリストが空である0
リスト:1人の社員ID:1、スタッフ名:ボブ- >リスト:1人の従業員ID:8、従業員名:マイク- >リスト:1人の従業員ID:15、従業員名:トム- >リスト: 1つの従業員番号:36、従業員名:ゼッケン- >リスト:1従業員番号:57、従業員名:POP - >
現在の2リストが空である
現在のリスト空3れる
電流4リストは空である
現在のリスト空で5
現在のリストが空で6人のある
========== ==========従業メニュー
INSERTが追加従業員を表す
表示は、従業員が表す示し
見つけるクエリスタッフのことを示している
出口が従業員を終了するために
あなたの選択を入力してください:
INSERTを
上記IDの上に従業員を入力してください:
12
従業員の名前を入力してください:
VIV
==========従業メニュー==========
INSERTが追加従業員を表すが
、ディスプレイは、従業員が表す示し
見つけるクエリスタッフのことを示している
ため出口が従業員を辞め
あなたの選択を入力してください:
ショー
現在のリストは空0である
1人の社員ID:1、スタッフ名:ボブ- >リスト:リスト1人の従業員ID:8、従業員名:マイク- >リスト:1人の従業員ID:15、従業員の名前:トム- >リスト:1人の従業員番号:36、従業員名:ゼッケン- >リスト:1人の従業員番号:57、従業員名:ポップ- >
現在のリストが2空で
現在3のリストが空である
現在のリストが空である4
リスト:5、従業員ID:12、従業員名:VIV - >
現在のリストが空である6人の
==========従業メニュー==========
INSERTが追加従業員を表すには
、ディスプレイを示して示して従業員が
見つけ、クエリのスタッフのことを示している
出口は従業員が終了する
:あなたの選択を入力してください
見つける
あなたが探しているあなた、入力されたIDを:
12
見つかっリスト5その12人の従業
========== =======従業メニュー===
INSERTは追加の従業員を表す
表示は、従業員が表す表示され
、クエリのスタッフのことを示して見つける
の従業員を終了する終了
あなたの選択を入力してください:
見つける
あなたが探しているあなた、入力されたIDを:
7
= 7人の従業員IDは存在しませんが
======== ==従業メニュー==========
INSERTは追加の従業員を表す
表示は、従業員が表す表示され
、従業員は、クエリを表し見つけます
出口は、従業員の終了を意味
:あなたの選択を入力してください
終了を
F:\ goproject \ SRC \ go_code \ data_structure>