struct record x ename jname addr struct record
![](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-1.jpg)
![](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-2.jpg)
![オープンアドレッシング法 開始前 struct record x ename: jname: addr : struct record dummy ←x: ファイルから取り出したレコード1件を保持 オープンアドレッシング法 開始前 struct record x ename: jname: addr : struct record dummy ←x: ファイルから取り出したレコード1件を保持](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-3.jpg)
![struct record x ename: jname: addr : オープンアドレッシング法 ハッシュ表初期化 struct record dummy ename: Yokohama struct record x ename: jname: addr : オープンアドレッシング法 ハッシュ表初期化 struct record dummy ename: Yokohama](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-4.jpg)
![struct record x ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 オープンアドレッシング法 レコード1件目取り出し struct struct record x ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 オープンアドレッシング法 レコード1件目取り出し struct](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-5.jpg)
![オープンアドレッシング法 レコード1件目ハッシュ関数計算 struct record x ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hash(“Yokohama オープンアドレッシング法 レコード1件目ハッシュ関数計算 struct record x ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hash(“Yokohama](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-6.jpg)
![オープンアドレッシング法 レコード1件目ハッシュ表へ登録 struct record x ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hash(“Yokohama オープンアドレッシング法 レコード1件目ハッシュ表へ登録 struct record x ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hash(“Yokohama](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-7.jpg)
![struct record x ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 オープンアドレッシング法 レコード2件目取り出し struct struct record x ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 オープンアドレッシング法 レコード2件目取り出し struct](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-8.jpg)
![オープンアドレッシング法 レコード2件目ハッシュ関数計算 struct record x ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hash(“Kanagawa オープンアドレッシング法 レコード2件目ハッシュ関数計算 struct record x ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hash(“Kanagawa](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-9.jpg)
![オープンアドレッシング法 レコード2件目ハッシュ表へ登録 struct record x ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hash(“Kanagawa オープンアドレッシング法 レコード2件目ハッシュ表へ登録 struct record x ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hash(“Kanagawa](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-10.jpg)
![struct record x ename: Hato Saburo jname: 鳩三郎 addr : 鎌倉市小町 オープンアドレッシング法 レコード3件目取り出し struct struct record x ename: Hato Saburo jname: 鳩三郎 addr : 鎌倉市小町 オープンアドレッシング法 レコード3件目取り出し struct](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-11.jpg)
![オープンアドレッシング法 レコード3件目ハッシュ関数計算 struct record x ename: Hato Saburo jname: 鳩三郎 addr : 鎌倉市小町 hash(“Hato オープンアドレッシング法 レコード3件目ハッシュ関数計算 struct record x ename: Hato Saburo jname: 鳩三郎 addr : 鎌倉市小町 hash(“Hato](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-12.jpg)
![struct record x ename: Hato Saburo jname: 鳩三郎 addr : 鎌倉市小町 オープンアドレッシング法 レコード3件目ハッシュ関数再計算 hash(“Hato struct record x ename: Hato Saburo jname: 鳩三郎 addr : 鎌倉市小町 オープンアドレッシング法 レコード3件目ハッシュ関数再計算 hash(“Hato](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-13.jpg)
![オープンアドレッシング法 レコード3件目ハッシュ表へ登録 struct record x ename: Hato Saburo jname: 鳩三郎 addr : 鎌倉市小町 hash(“Hato オープンアドレッシング法 レコード3件目ハッシュ表へ登録 struct record x ename: Hato Saburo jname: 鳩三郎 addr : 鎌倉市小町 hash(“Hato](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-14.jpg)
![struct record x ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 オープンアドレッシング法 レコード4件目取り出し struct struct record x ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 オープンアドレッシング法 レコード4件目取り出し struct](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-15.jpg)
![オープンアドレッシング法 レコード4件目ハッシュ関数計算 struct record x ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hash(“Hojo オープンアドレッシング法 レコード4件目ハッシュ関数計算 struct record x ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hash(“Hojo](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-16.jpg)
![struct record x ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 オープンアドレッシング法 レコード4件目ハッシュ関数再計算 hash(“Hojo struct record x ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 オープンアドレッシング法 レコード4件目ハッシュ関数再計算 hash(“Hojo](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-17.jpg)
![オープンアドレッシング法 レコード4件目ハッシュ表へ登録 struct record x ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hash(“Hojo オープンアドレッシング法 レコード4件目ハッシュ表へ登録 struct record x ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hash(“Hojo](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-18.jpg)
![struct record x ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 オープンアドレッシング法 レコード5件目取り出し struct struct record x ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 オープンアドレッシング法 レコード5件目取り出し struct](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-19.jpg)
![オープンアドレッシング法 レコード5件目ハッシュ関数計算 struct record x ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hash(“Ashigara オープンアドレッシング法 レコード5件目ハッシュ関数計算 struct record x ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hash(“Ashigara](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-20.jpg)
![オープンアドレッシング法 レコード5件目ハッシュ表へ登録 struct record x ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hash(“Ashigara オープンアドレッシング法 レコード5件目ハッシュ表へ登録 struct record x ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hash(“Ashigara](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-21.jpg)
![struct record x ename: Ueno Ranran jname: 上野蘭々 addr : 台東区上野公園 オープンアドレッシング法 レコード6件目取り出し struct struct record x ename: Ueno Ranran jname: 上野蘭々 addr : 台東区上野公園 オープンアドレッシング法 レコード6件目取り出し struct](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-22.jpg)
![オープンアドレッシング法 レコード6件目ハッシュ関数計算 struct record x ename: Ueno Ranran jname: 上野蘭々 addr : 台東区上野公園 hash(“Ueno オープンアドレッシング法 レコード6件目ハッシュ関数計算 struct record x ename: Ueno Ranran jname: 上野蘭々 addr : 台東区上野公園 hash(“Ueno](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-23.jpg)
![struct record x ename: Ueno Ranran jname: 上野蘭々 addr : 台東区上野公園 オープンアドレッシング法 レコード6件目ハッシュ関数再計算 hash(“Ueno struct record x ename: Ueno Ranran jname: 上野蘭々 addr : 台東区上野公園 オープンアドレッシング法 レコード6件目ハッシュ関数再計算 hash(“Ueno](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-24.jpg)
![struct record x ename: Ueno Ranran jname: 上野蘭々 addr : 台東区上野公園 オープンアドレッシング法 レコード6件目ハッシュ関数再々計算 struct struct record x ename: Ueno Ranran jname: 上野蘭々 addr : 台東区上野公園 オープンアドレッシング法 レコード6件目ハッシュ関数再々計算 struct](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-25.jpg)
![オープンアドレッシング法 レコード6件目ハッシュ表へ登録 struct record x ename: Ueno Ranran jname: 上野蘭々 addr : 台東区上野公園 struct オープンアドレッシング法 レコード6件目ハッシュ表へ登録 struct record x ename: Ueno Ranran jname: 上野蘭々 addr : 台東区上野公園 struct](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-26.jpg)
![struct record x ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜 オープンアドレッシング法 レコード7件目取り出し struct struct record x ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜 オープンアドレッシング法 レコード7件目取り出し struct](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-27.jpg)
![オープンアドレッシング法 レコード7件目ハッシュ関数計算 struct record x ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜 hash(“Mitsuki オープンアドレッシング法 レコード7件目ハッシュ関数計算 struct record x ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜 hash(“Mitsuki](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-28.jpg)
![struct record x ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜 オープンアドレッシング法 レコード7件目ハッシュ関数再計算 hash(“Mitsuki struct record x ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜 オープンアドレッシング法 レコード7件目ハッシュ関数再計算 hash(“Mitsuki](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-29.jpg)
![struct record x ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜 オープンアドレッシング法 レコード7件目ハッシュ関数再々計算 struct struct record x ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜 オープンアドレッシング法 レコード7件目ハッシュ関数再々計算 struct](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-30.jpg)
![オープンアドレッシング法 レコード7件目ハッシュ表へ登録 struct record x ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜 struct オープンアドレッシング法 レコード7件目ハッシュ表へ登録 struct record x ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜 struct](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-31.jpg)
![struct record x ename: Nobi Toraemon jname: 野比寅右衛門 addr : 横須賀市野比 オープンアドレッシング法 レコード8件目取り出し struct struct record x ename: Nobi Toraemon jname: 野比寅右衛門 addr : 横須賀市野比 オープンアドレッシング法 レコード8件目取り出し struct](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-32.jpg)
![オープンアドレッシング法 レコード8件目ハッシュ関数計算 struct record x ename: Nobi Toraemon jname: 野比寅右衛門 addr : 横須賀市野比 hash(“Nobi オープンアドレッシング法 レコード8件目ハッシュ関数計算 struct record x ename: Nobi Toraemon jname: 野比寅右衛門 addr : 横須賀市野比 hash(“Nobi](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-33.jpg)
![オープンアドレッシング法 レコード8件目ハッシュ関数計算 struct record x ename: Nobi Toraemon jname: 野比寅右衛門 addr : 横須賀市野比 hash(“Nobi オープンアドレッシング法 レコード8件目ハッシュ関数計算 struct record x ename: Nobi Toraemon jname: 野比寅右衛門 addr : 横須賀市野比 hash(“Nobi](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-34.jpg)
![オープンアドレッシング法 レコード8件目ハッシュ表へ登録 struct record x ename: Nobi Toraemon jname: 野比寅右衛門 addr : 横須賀市野比 hash(“Nobi オープンアドレッシング法 レコード8件目ハッシュ表へ登録 struct record x ename: Nobi Toraemon jname: 野比寅右衛門 addr : 横須賀市野比 hash(“Nobi](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-35.jpg)
![struct record x ename: jname: addr : オープンアドレッシング法 登録後 struct record dummy ename: Yokohama struct record x ename: jname: addr : オープンアドレッシング法 登録後 struct record dummy ename: Yokohama](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-36.jpg)
![struct record x ename: jname: addr : オープンアドレッシング法 重複データ登録の試み struct record dummy ename: Yokohama struct record x ename: jname: addr : オープンアドレッシング法 重複データ登録の試み struct record dummy ename: Yokohama](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-37.jpg)
![オープンアドレッシング法 重複データ登録の試み struct record x ename: jname: addr : hash(“Yokohama Kunihiro”) = 8 struct オープンアドレッシング法 重複データ登録の試み struct record x ename: jname: addr : hash(“Yokohama Kunihiro”) = 8 struct](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-38.jpg)
![オープンアドレッシング法 探索 1 struct record x ename: jname: addr : hash(“Hato Saburo”) = 8 → 該当せず オープンアドレッシング法 探索 1 struct record x ename: jname: addr : hash(“Hato Saburo”) = 8 → 該当せず](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-39.jpg)
![オープンアドレッシング法 探索 1 struct record x ename: jname: addr : hash(“Hato Saburo”) = 8 → 該当せず オープンアドレッシング法 探索 1 struct record x ename: jname: addr : hash(“Hato Saburo”) = 8 → 該当せず](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-40.jpg)
![オープンアドレッシング法 探索 1 struct record x ename: jname: addr : struct record dummy hash(“Hato オープンアドレッシング法 探索 1 struct record x ename: jname: addr : struct record dummy hash(“Hato](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-41.jpg)
![オープンアドレッシング法 探索 2 struct record x ename: jname: addr : hash(“Yokohama Kunihiro”) = 8 オープンアドレッシング法 探索 2 struct record x ename: jname: addr : hash(“Yokohama Kunihiro”) = 8](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-42.jpg)
![struct record x ename: jname: addr : オープンアドレッシング法 削除 1 struct record dummy ename: struct record x ename: jname: addr : オープンアドレッシング法 削除 1 struct record dummy ename:](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-43.jpg)
![オープンアドレッシング法 削除 1: 探索 struct record x ename: jname: addr : hash(“Hato Saburo”) = オープンアドレッシング法 削除 1: 探索 struct record x ename: jname: addr : hash(“Hato Saburo”) =](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-44.jpg)
![オープンアドレッシング法 削除 1: 探索 struct record x ename: jname: addr : hash(“Hato Saburo”) = オープンアドレッシング法 削除 1: 探索 struct record x ename: jname: addr : hash(“Hato Saburo”) =](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-45.jpg)
![オープンアドレッシング法 削除 1: 探索 struct record x ename: jname: addr : struct record dummy オープンアドレッシング法 削除 1: 探索 struct record x ename: jname: addr : struct record dummy](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-46.jpg)
![オープンアドレッシング法 削除 1: idに「削除済」を記録 struct record x ename: jname: addr : struct record dummy オープンアドレッシング法 削除 1: idに「削除済」を記録 struct record x ename: jname: addr : struct record dummy](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-47.jpg)
![struct record x ename: jname: addr : オープンアドレッシング法 削除 2 struct record dummy ename: struct record x ename: jname: addr : オープンアドレッシング法 削除 2 struct record dummy ename:](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-48.jpg)
![オープンアドレッシング法 削除 2: 探索 struct record x ename: jname: addr : hash(“Ueno Ranran”) = オープンアドレッシング法 削除 2: 探索 struct record x ename: jname: addr : hash(“Ueno Ranran”) =](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-49.jpg)
![オープンアドレッシング法 削除 2: 探索(再ハッシュ) struct record x ename: jname: addr : hash(“Ueno Ranran”) = オープンアドレッシング法 削除 2: 探索(再ハッシュ) struct record x ename: jname: addr : hash(“Ueno Ranran”) =](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-50.jpg)
![オープンアドレッシング法 削除 2: 探索(再ハッシュ) struct record x ename: jname: addr : struct record dummy オープンアドレッシング法 削除 2: 探索(再ハッシュ) struct record x ename: jname: addr : struct record dummy](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-51.jpg)
![オープンアドレッシング法 削除 2: 探索(再ハッシュ) struct record x ename: jname: addr : struct record dummy オープンアドレッシング法 削除 2: 探索(再ハッシュ) struct record x ename: jname: addr : struct record dummy](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-52.jpg)
![オープンアドレッシング法 削除 2: idに「削除済」を記録 struct record x ename: jname: addr : struct record dummy オープンアドレッシング法 削除 2: idに「削除済」を記録 struct record x ename: jname: addr : struct record dummy](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-53.jpg)
![struct record x ename: jname: addr : オープンアドレッシング法 削除 3 struct record dummy ename: struct record x ename: jname: addr : オープンアドレッシング法 削除 3 struct record dummy ename:](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-54.jpg)
![オープンアドレッシング法 削除 3: 探索 struct record x ename: jname: addr : hash(“Nobi Toraemon”) = オープンアドレッシング法 削除 3: 探索 struct record x ename: jname: addr : hash(“Nobi Toraemon”) =](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-55.jpg)
![オープンアドレッシング法 削除 3: 探索(再ハッシュ) struct record x ename: jname: addr : hash(“Nobi Toraemon”) = オープンアドレッシング法 削除 3: 探索(再ハッシュ) struct record x ename: jname: addr : hash(“Nobi Toraemon”) =](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-56.jpg)
![オープンアドレッシング法 削除 3: 探索(再ハッシュ) struct record x ename: jname: addr : struct record dummy オープンアドレッシング法 削除 3: 探索(再ハッシュ) struct record x ename: jname: addr : struct record dummy](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-57.jpg)
![オープンアドレッシング法 削除 3: idに「削除済」を記録 struct record x ename: jname: addr : struct record dummy オープンアドレッシング法 削除 3: idに「削除済」を記録 struct record x ename: jname: addr : struct record dummy](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-58.jpg)
![struct record x ename: jname: addr : オープンアドレッシング法 削除 4 struct record dummy ename: struct record x ename: jname: addr : オープンアドレッシング法 削除 4 struct record dummy ename:](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-59.jpg)
![オープンアドレッシング法 削除 4: 探索 struct record x ename: jname: addr : hash(“Nanashi Gonbei”) = オープンアドレッシング法 削除 4: 探索 struct record x ename: jname: addr : hash(“Nanashi Gonbei”) =](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-60.jpg)
![オープンアドレッシング法 削除 4: 探索 struct record x ename: jname: addr : hash(“Nanashi Gonbei”) = オープンアドレッシング法 削除 4: 探索 struct record x ename: jname: addr : hash(“Nanashi Gonbei”) =](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-61.jpg)
![オープンアドレッシング法 削除 4: 探索(再ハッシュ 1回目) struct record x ename: jname: addr : struct record オープンアドレッシング法 削除 4: 探索(再ハッシュ 1回目) struct record x ename: jname: addr : struct record](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-62.jpg)
![オープンアドレッシング法 削除 4: 探索(再ハッシュ 2回目) struct record x ename: jname: addr : struct record オープンアドレッシング法 削除 4: 探索(再ハッシュ 2回目) struct record x ename: jname: addr : struct record](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-63.jpg)
![オープンアドレッシング法 削除 4: 探索(再ハッシュ 3回目) struct record x ename: jname: addr : struct record オープンアドレッシング法 削除 4: 探索(再ハッシュ 3回目) struct record x ename: jname: addr : struct record](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-64.jpg)
![オープンアドレッシング法 削除 4: 探索(再ハッシュ 4回目) struct record x ename: jname: addr : struct record オープンアドレッシング法 削除 4: 探索(再ハッシュ 4回目) struct record x ename: jname: addr : struct record](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-65.jpg)
![オープンアドレッシング法 削除 4: 探索(再ハッシュ 5回目) struct record x ename: jname: addr : struct record オープンアドレッシング法 削除 4: 探索(再ハッシュ 5回目) struct record x ename: jname: addr : struct record](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-66.jpg)
![オープンアドレッシング法 削除 4: 探索(再ハッシュ 6回目) struct record x ename: jname: addr : struct record オープンアドレッシング法 削除 4: 探索(再ハッシュ 6回目) struct record x ename: jname: addr : struct record](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-67.jpg)
![オープンアドレッシング法 削除 4: 探索(再ハッシュ 7回目) struct record x ename: jname: addr : struct record オープンアドレッシング法 削除 4: 探索(再ハッシュ 7回目) struct record x ename: jname: addr : struct record](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-68.jpg)
![struct record x ename: jname: addr : オープンアドレッシング法 削除 5 struct record dummy ename: struct record x ename: jname: addr : オープンアドレッシング法 削除 5 struct record dummy ename:](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-69.jpg)
![オープンアドレッシング法 削除 5: 探索 struct record x ename: jname: addr : hash(“Yokohama Kunihiro”) = オープンアドレッシング法 削除 5: 探索 struct record x ename: jname: addr : hash(“Yokohama Kunihiro”) =](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-70.jpg)
![オープンアドレッシング法 削除 5: 探索idに「削除済」を記録 struct record x ename: jname: addr : hash(“Yokohama Kunihiro”) = オープンアドレッシング法 削除 5: 探索idに「削除済」を記録 struct record x ename: jname: addr : hash(“Yokohama Kunihiro”) =](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-71.jpg)
![struct record x ename: jname: addr : オープンアドレッシング法 削除後 struct record dummy ename: Yokohama struct record x ename: jname: addr : オープンアドレッシング法 削除後 struct record dummy ename: Yokohama](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-72.jpg)
![オープンアドレッシング法 探索 struct record x ename: jname: addr : hash(“Hato Saburo”) = 8 → オープンアドレッシング法 探索 struct record x ename: jname: addr : hash(“Hato Saburo”) = 8 →](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-73.jpg)
![オープンアドレッシング法 探索 struct record x ename: jname: addr : hash(“Hato Saburo”) = 8 → オープンアドレッシング法 探索 struct record x ename: jname: addr : hash(“Hato Saburo”) = 8 →](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-74.jpg)
![オープンアドレッシング法 探索 struct record x ename: jname: addr : struct record dummy hash(“Hato Saburo”) オープンアドレッシング法 探索 struct record x ename: jname: addr : struct record dummy hash(“Hato Saburo”)](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-75.jpg)
![オープンアドレッシング法 探索 struct record x ename: jname: addr : struct record dummy ename: Yokohama オープンアドレッシング法 探索 struct record x ename: jname: addr : struct record dummy ename: Yokohama](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-76.jpg)
![オープンアドレッシング法 探索 struct record x ename: jname: addr : struct record dummy ename: Yokohama オープンアドレッシング法 探索 struct record x ename: jname: addr : struct record dummy ename: Yokohama](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-77.jpg)
![オープンアドレッシング法 探索 struct record x ename: jname: addr : struct record dummy ename: Yokohama オープンアドレッシング法 探索 struct record x ename: jname: addr : struct record dummy ename: Yokohama](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-78.jpg)
![オープンアドレッシング法 探索 struct record x ename: jname: addr : struct record dummy ename: Yokohama オープンアドレッシング法 探索 struct record x ename: jname: addr : struct record dummy ename: Yokohama](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-79.jpg)
![オープンアドレッシング法 探索 struct record x ename: jname: addr : struct record dummy ename: Yokohama オープンアドレッシング法 探索 struct record x ename: jname: addr : struct record dummy ename: Yokohama](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-80.jpg)
![オープンアドレッシング法 探索 struct record x ename: jname: addr : struct record dummy ename: Yokohama オープンアドレッシング法 探索 struct record x ename: jname: addr : struct record dummy ename: Yokohama](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-81.jpg)
![オープンアドレッシング法 挿入 struct record x ename: jname: addr : hash(“Yokohama Kunihiro”) = 8 struct オープンアドレッシング法 挿入 struct record x ename: jname: addr : hash(“Yokohama Kunihiro”) = 8 struct](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-82.jpg)
![オープンアドレッシング法 挿入 struct record x ename: jname: addr : hash(“Yokohama Kunihiro”) = 8 → オープンアドレッシング法 挿入 struct record x ename: jname: addr : hash(“Yokohama Kunihiro”) = 8 →](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-83.jpg)
![オープンアドレッシング法 挿入 struct record x ename: jname: addr : hash(“Yokohama Kunihiro”) = 8 → オープンアドレッシング法 挿入 struct record x ename: jname: addr : hash(“Yokohama Kunihiro”) = 8 →](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-84.jpg)
![struct record x ename: jname: addr : オープンアドレッシング法 挿入後 struct record dummy ename: Yokohama struct record x ename: jname: addr : オープンアドレッシング法 挿入後 struct record dummy ename: Yokohama](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-85.jpg)
![オープンアドレッシング法 探索 1 struct record x ename: jname: addr : hash(“Yokohama Kunihiro”) = 8 オープンアドレッシング法 探索 1 struct record x ename: jname: addr : hash(“Yokohama Kunihiro”) = 8](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-86.jpg)
![struct record x ename: jname: addr : オープンアドレッシング法 終了直前の状態 struct record dummy ename: Yokohama struct record x ename: jname: addr : オープンアドレッシング法 終了直前の状態 struct record dummy ename: Yokohama](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-87.jpg)
- Slides: 87
![](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-1.jpg)
![](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-2.jpg)
![オープンアドレッシング法 開始前 struct record x ename jname addr struct record dummy x ファイルから取り出したレコード1件を保持 オープンアドレッシング法 開始前 struct record x ename: jname: addr : struct record dummy ←x: ファイルから取り出したレコード1件を保持](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-3.jpg)
オープンアドレッシング法 開始前 struct record x ename: jname: addr : struct record dummy ←x: ファイルから取り出したレコード1件を保持 ←dummy: ダミーのデータ(重複キーを持つ) ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 struct item hashtable[B] hashtable[ 0] hashtable[ 4] hashtable[ 1] hashtable[ 5] hashtable[ 2] hashtable[ 6] hashtable[ 3] hashtable[ 7] hashtable[ 8] /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); hashtable[ 9] /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); hashtable[10] hashtable[11] /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); hashtable[12] ↑ハッシュ表: アイテムの実体を B個格納可能
![struct record x ename jname addr オープンアドレッシング法 ハッシュ表初期化 struct record dummy ename Yokohama struct record x ename: jname: addr : オープンアドレッシング法 ハッシュ表初期化 struct record dummy ename: Yokohama](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-4.jpg)
struct record x ename: jname: addr : オープンアドレッシング法 ハッシュ表初期化 struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: ***EMPTY*** hashtable[ 4] id: ***EMPTY*** hashtable[ 1] id: ***EMPTY*** hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** hashtable[ 8] id: ***EMPTY*** hashtable[ 9] id: ***EMPTY*** /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); hashtable[10] id: ***EMPTY*** hashtable[11] id: ***EMPTY*** /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); hashtable[12] id: ***EMPTY***
![struct record x ename Yokohama Kunihiro jname 横浜国大 addr 横浜市保土ヶ谷区常盤台 オープンアドレッシング法 レコード1件目取り出し struct struct record x ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 オープンアドレッシング法 レコード1件目取り出し struct](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-5.jpg)
struct record x ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 オープンアドレッシング法 レコード1件目取り出し struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: ***EMPTY*** hashtable[ 4] id: ***EMPTY*** hashtable[ 1] id: ***EMPTY*** hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** hashtable[ 8] id: ***EMPTY*** hashtable[ 9] id: ***EMPTY*** /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); hashtable[10] id: ***EMPTY*** hashtable[11] id: ***EMPTY*** /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); hashtable[12] id: ***EMPTY***
![オープンアドレッシング法 レコード1件目ハッシュ関数計算 struct record x ename Yokohama Kunihiro jname 横浜国大 addr 横浜市保土ヶ谷区常盤台 hashYokohama オープンアドレッシング法 レコード1件目ハッシュ関数計算 struct record x ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hash(“Yokohama](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-6.jpg)
オープンアドレッシング法 レコード1件目ハッシュ関数計算 struct record x ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hash(“Yokohama Kunihiro”) = 8 struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: ***EMPTY*** hashtable[ 4] id: ***EMPTY*** hashtable[ 1] id: ***EMPTY*** hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** hashtable[ 8] id: ***EMPTY*** hashtable[ 9] id: ***EMPTY*** /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); hashtable[10] id: ***EMPTY*** hashtable[11] id: ***EMPTY*** /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); hashtable[12] id: ***EMPTY***
![オープンアドレッシング法 レコード1件目ハッシュ表へ登録 struct record x ename Yokohama Kunihiro jname 横浜国大 addr 横浜市保土ヶ谷区常盤台 hashYokohama オープンアドレッシング法 レコード1件目ハッシュ表へ登録 struct record x ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hash(“Yokohama](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-7.jpg)
オープンアドレッシング法 レコード1件目ハッシュ表へ登録 struct record x ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hash(“Yokohama Kunihiro”) = 8 struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: ***EMPTY*** hashtable[ 4] id: ***EMPTY*** hashtable[ 1] id: ***EMPTY*** hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: ***EMPTY*** /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); hashtable[10] id: ***EMPTY*** hashtable[11] id: ***EMPTY*** /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); hashtable[12] id: ***EMPTY***
![struct record x ename Kanagawa Hanako jname 神奈川花子 addr 横浜市神奈川区三ッ沢上町 オープンアドレッシング法 レコード2件目取り出し struct struct record x ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 オープンアドレッシング法 レコード2件目取り出し struct](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-8.jpg)
struct record x ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 オープンアドレッシング法 レコード2件目取り出し struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: ***EMPTY*** hashtable[ 4] id: ***EMPTY*** hashtable[ 1] id: ***EMPTY*** hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: ***EMPTY*** /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); hashtable[10] id: ***EMPTY*** hashtable[11] id: ***EMPTY*** /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); hashtable[12] id: ***EMPTY***
![オープンアドレッシング法 レコード2件目ハッシュ関数計算 struct record x ename Kanagawa Hanako jname 神奈川花子 addr 横浜市神奈川区三ッ沢上町 hashKanagawa オープンアドレッシング法 レコード2件目ハッシュ関数計算 struct record x ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hash(“Kanagawa](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-9.jpg)
オープンアドレッシング法 レコード2件目ハッシュ関数計算 struct record x ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hash(“Kanagawa Hanako”) = 4 struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: ***EMPTY*** hashtable[ 4] id: ***EMPTY*** hashtable[ 1] id: ***EMPTY*** hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: ***EMPTY*** /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); hashtable[10] id: ***EMPTY*** hashtable[11] id: ***EMPTY*** /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); hashtable[12] id: ***EMPTY***
![オープンアドレッシング法 レコード2件目ハッシュ表へ登録 struct record x ename Kanagawa Hanako jname 神奈川花子 addr 横浜市神奈川区三ッ沢上町 hashKanagawa オープンアドレッシング法 レコード2件目ハッシュ表へ登録 struct record x ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hash(“Kanagawa](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-10.jpg)
オープンアドレッシング法 レコード2件目ハッシュ表へ登録 struct record x ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hash(“Kanagawa Hanako”) = 4 struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: ***EMPTY*** hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: ***EMPTY*** hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: ***EMPTY*** /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); hashtable[10] id: ***EMPTY*** hashtable[11] id: ***EMPTY*** /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); hashtable[12] id: ***EMPTY***
![struct record x ename Hato Saburo jname 鳩三郎 addr 鎌倉市小町 オープンアドレッシング法 レコード3件目取り出し struct struct record x ename: Hato Saburo jname: 鳩三郎 addr : 鎌倉市小町 オープンアドレッシング法 レコード3件目取り出し struct](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-11.jpg)
struct record x ename: Hato Saburo jname: 鳩三郎 addr : 鎌倉市小町 オープンアドレッシング法 レコード3件目取り出し struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: ***EMPTY*** hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: ***EMPTY*** hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: ***EMPTY*** /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); hashtable[10] id: ***EMPTY*** hashtable[11] id: ***EMPTY*** /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); hashtable[12] id: ***EMPTY***
![オープンアドレッシング法 レコード3件目ハッシュ関数計算 struct record x ename Hato Saburo jname 鳩三郎 addr 鎌倉市小町 hashHato オープンアドレッシング法 レコード3件目ハッシュ関数計算 struct record x ename: Hato Saburo jname: 鳩三郎 addr : 鎌倉市小町 hash(“Hato](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-12.jpg)
オープンアドレッシング法 レコード3件目ハッシュ関数計算 struct record x ename: Hato Saburo jname: 鳩三郎 addr : 鎌倉市小町 hash(“Hato Saburo”) = 8 → すでに埋まっている(衝突) struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: ***EMPTY*** hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: ***EMPTY*** hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: ***EMPTY*** /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); hashtable[10] id: ***EMPTY*** hashtable[11] id: ***EMPTY*** /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); hashtable[12] id: ***EMPTY***
![struct record x ename Hato Saburo jname 鳩三郎 addr 鎌倉市小町 オープンアドレッシング法 レコード3件目ハッシュ関数再計算 hashHato struct record x ename: Hato Saburo jname: 鳩三郎 addr : 鎌倉市小町 オープンアドレッシング法 レコード3件目ハッシュ関数再計算 hash(“Hato](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-13.jpg)
struct record x ename: Hato Saburo jname: 鳩三郎 addr : 鎌倉市小町 オープンアドレッシング法 レコード3件目ハッシュ関数再計算 hash(“Hato Saburo”) = 8 → すでに埋まっている(衝突) rehash(“Hato Saburo”, 1) = 9 struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: ***EMPTY*** hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: ***EMPTY*** hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: ***EMPTY*** /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); hashtable[10] id: ***EMPTY*** hashtable[11] id: ***EMPTY*** /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); hashtable[12] id: ***EMPTY***
![オープンアドレッシング法 レコード3件目ハッシュ表へ登録 struct record x ename Hato Saburo jname 鳩三郎 addr 鎌倉市小町 hashHato オープンアドレッシング法 レコード3件目ハッシュ表へ登録 struct record x ename: Hato Saburo jname: 鳩三郎 addr : 鎌倉市小町 hash(“Hato](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-14.jpg)
オープンアドレッシング法 レコード3件目ハッシュ表へ登録 struct record x ename: Hato Saburo jname: 鳩三郎 addr : 鎌倉市小町 hash(“Hato Saburo”) = 8 rehash(“Hato Saburo”, 1) = 9 struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: ***EMPTY*** hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: ***EMPTY*** hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: Hato ***EMPTY*** id: Saburo hash: 8 data: ename: Hato Saburo jname: 鳩三郎 addr : 鎌倉市小町 hashtable[10] id: ***EMPTY*** hashtable[11] id: ***EMPTY*** /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); hashtable[12] id: ***EMPTY***
![struct record x ename Hojo Umeko jname 北条梅子 addr 小田原市城山 オープンアドレッシング法 レコード4件目取り出し struct struct record x ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 オープンアドレッシング法 レコード4件目取り出し struct](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-15.jpg)
struct record x ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 オープンアドレッシング法 レコード4件目取り出し struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: ***EMPTY*** hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: ***EMPTY*** hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: Hato ***EMPTY*** id: Saburo hash: 8 data: ename: Hato Saburo jname: 鳩三郎 addr : 鎌倉市小町 hashtable[10] id: ***EMPTY*** hashtable[11] id: ***EMPTY*** /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); hashtable[12] id: ***EMPTY***
![オープンアドレッシング法 レコード4件目ハッシュ関数計算 struct record x ename Hojo Umeko jname 北条梅子 addr 小田原市城山 hashHojo オープンアドレッシング法 レコード4件目ハッシュ関数計算 struct record x ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hash(“Hojo](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-16.jpg)
オープンアドレッシング法 レコード4件目ハッシュ関数計算 struct record x ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hash(“Hojo Umeko”) = 9 → すでに埋まっている(衝突) struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: ***EMPTY*** hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: ***EMPTY*** hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: Hato ***EMPTY*** id: Saburo hash: 8 data: ename: Hato Saburo jname: 鳩三郎 addr : 鎌倉市小町 hashtable[10] id: ***EMPTY*** hashtable[11] id: ***EMPTY*** /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); hashtable[12] id: ***EMPTY***
![struct record x ename Hojo Umeko jname 北条梅子 addr 小田原市城山 オープンアドレッシング法 レコード4件目ハッシュ関数再計算 hashHojo struct record x ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 オープンアドレッシング法 レコード4件目ハッシュ関数再計算 hash(“Hojo](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-17.jpg)
struct record x ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 オープンアドレッシング法 レコード4件目ハッシュ関数再計算 hash(“Hojo Umeko”) = 9 → すでに埋まっている(衝突) rehash(“Hojo Umeko”, 1) = 10 struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: ***EMPTY*** hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: ***EMPTY*** hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: Hato ***EMPTY*** id: Saburo hash: 8 data: ename: Hato Saburo jname: 鳩三郎 addr : 鎌倉市小町 hashtable[10] id: ***EMPTY*** hashtable[11] id: ***EMPTY*** /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); hashtable[12] id: ***EMPTY***
![オープンアドレッシング法 レコード4件目ハッシュ表へ登録 struct record x ename Hojo Umeko jname 北条梅子 addr 小田原市城山 hashHojo オープンアドレッシング法 レコード4件目ハッシュ表へ登録 struct record x ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hash(“Hojo](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-18.jpg)
オープンアドレッシング法 レコード4件目ハッシュ表へ登録 struct record x ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hash(“Hojo Umeko”) = 9 → すでに埋まっている(衝突) rehash(“Hojo Umeko”, 1) = 10 struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: ***EMPTY*** hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: ***EMPTY*** hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: Hato ***EMPTY*** id: Saburo hash: 8 data: ename: Hato Saburo jname: 鳩三郎 addr : 鎌倉市小町 hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: ***EMPTY*** /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); hashtable[12] id: ***EMPTY***
![struct record x ename Ashigara Kintaro jname 足柄金太郎 addr 南足柄市金時山 オープンアドレッシング法 レコード5件目取り出し struct struct record x ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 オープンアドレッシング法 レコード5件目取り出し struct](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-19.jpg)
struct record x ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 オープンアドレッシング法 レコード5件目取り出し struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: ***EMPTY*** hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: ***EMPTY*** hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: Hato ***EMPTY*** id: Saburo hash: 8 data: ename: Hato Saburo jname: 鳩三郎 addr : 鎌倉市小町 hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: ***EMPTY*** /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); hashtable[12] id: ***EMPTY***
![オープンアドレッシング法 レコード5件目ハッシュ関数計算 struct record x ename Ashigara Kintaro jname 足柄金太郎 addr 南足柄市金時山 hashAshigara オープンアドレッシング法 レコード5件目ハッシュ関数計算 struct record x ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hash(“Ashigara](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-20.jpg)
オープンアドレッシング法 レコード5件目ハッシュ関数計算 struct record x ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hash(“Ashigara Kintaro”) = 0 struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: ***EMPTY*** hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: ***EMPTY*** hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: Hato ***EMPTY*** id: Saburo hash: 8 data: ename: Hato Saburo jname: 鳩三郎 addr : 鎌倉市小町 hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: ***EMPTY*** /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); hashtable[12] id: ***EMPTY***
![オープンアドレッシング法 レコード5件目ハッシュ表へ登録 struct record x ename Ashigara Kintaro jname 足柄金太郎 addr 南足柄市金時山 hashAshigara オープンアドレッシング法 レコード5件目ハッシュ表へ登録 struct record x ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hash(“Ashigara](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-21.jpg)
オープンアドレッシング法 レコード5件目ハッシュ表へ登録 struct record x ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hash(“Ashigara Kintaro”) = 0 struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: ***EMPTY*** hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: Hato ***EMPTY*** id: Saburo hash: 8 data: ename: Hato Saburo jname: 鳩三郎 addr : 鎌倉市小町 hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: ***EMPTY*** /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); hashtable[12] id: ***EMPTY***
![struct record x ename Ueno Ranran jname 上野蘭々 addr 台東区上野公園 オープンアドレッシング法 レコード6件目取り出し struct struct record x ename: Ueno Ranran jname: 上野蘭々 addr : 台東区上野公園 オープンアドレッシング法 レコード6件目取り出し struct](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-22.jpg)
struct record x ename: Ueno Ranran jname: 上野蘭々 addr : 台東区上野公園 オープンアドレッシング法 レコード6件目取り出し struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: ***EMPTY*** hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: Hato ***EMPTY*** id: Saburo hash: 8 data: ename: Hato Saburo jname: 鳩三郎 addr : 鎌倉市小町 hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: ***EMPTY*** /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); hashtable[12] id: ***EMPTY***
![オープンアドレッシング法 レコード6件目ハッシュ関数計算 struct record x ename Ueno Ranran jname 上野蘭々 addr 台東区上野公園 hashUeno オープンアドレッシング法 レコード6件目ハッシュ関数計算 struct record x ename: Ueno Ranran jname: 上野蘭々 addr : 台東区上野公園 hash(“Ueno](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-23.jpg)
オープンアドレッシング法 レコード6件目ハッシュ関数計算 struct record x ename: Ueno Ranran jname: 上野蘭々 addr : 台東区上野公園 hash(“Ueno Ranran”) = 9 → すでに埋まっている(衝突) struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: ***EMPTY*** hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: Hato ***EMPTY*** id: Saburo hash: 8 data: ename: Hato Saburo jname: 鳩三郎 addr : 鎌倉市小町 hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: ***EMPTY*** /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); hashtable[12] id: ***EMPTY***
![struct record x ename Ueno Ranran jname 上野蘭々 addr 台東区上野公園 オープンアドレッシング法 レコード6件目ハッシュ関数再計算 hashUeno struct record x ename: Ueno Ranran jname: 上野蘭々 addr : 台東区上野公園 オープンアドレッシング法 レコード6件目ハッシュ関数再計算 hash(“Ueno](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-24.jpg)
struct record x ename: Ueno Ranran jname: 上野蘭々 addr : 台東区上野公園 オープンアドレッシング法 レコード6件目ハッシュ関数再計算 hash(“Ueno Ranran”) = 9 → すでに埋まっている(衝突) rehash(“Ueno Ranran”, 1) = 10 → すでに埋まっている(衝突) struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: ***EMPTY*** hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: Hato ***EMPTY*** id: Saburo hash: 8 data: ename: Hato Saburo jname: 鳩三郎 addr : 鎌倉市小町 hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: ***EMPTY*** /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); hashtable[12] id: ***EMPTY***
![struct record x ename Ueno Ranran jname 上野蘭々 addr 台東区上野公園 オープンアドレッシング法 レコード6件目ハッシュ関数再々計算 struct struct record x ename: Ueno Ranran jname: 上野蘭々 addr : 台東区上野公園 オープンアドレッシング法 レコード6件目ハッシュ関数再々計算 struct](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-25.jpg)
struct record x ename: Ueno Ranran jname: 上野蘭々 addr : 台東区上野公園 オープンアドレッシング法 レコード6件目ハッシュ関数再々計算 struct record dummy hash(“Ueno Ranran”) = 9 → すでに埋まっている(衝突) rehash(“Ueno Ranran”, 1) = 10 → すでに埋まっている(衝突) rehash(“Ueno Ranran”, 2) = 11 ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: ***EMPTY*** hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: Hato ***EMPTY*** id: Saburo hash: 8 data: ename: Hato Saburo jname: 鳩三郎 addr : 鎌倉市小町 hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: ***EMPTY*** /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); hashtable[12] id: ***EMPTY***
![オープンアドレッシング法 レコード6件目ハッシュ表へ登録 struct record x ename Ueno Ranran jname 上野蘭々 addr 台東区上野公園 struct オープンアドレッシング法 レコード6件目ハッシュ表へ登録 struct record x ename: Ueno Ranran jname: 上野蘭々 addr : 台東区上野公園 struct](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-26.jpg)
オープンアドレッシング法 レコード6件目ハッシュ表へ登録 struct record x ename: Ueno Ranran jname: 上野蘭々 addr : 台東区上野公園 struct record dummy hash(“Ueno Ranran”) = 9 → すでに埋まっている(衝突) rehash(“Ueno Ranran”, 1) = 10 → すでに埋まっている(衝突) rehash(“Ueno Ranran”, 2) = 11 ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: ***EMPTY*** hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: Hato ***EMPTY*** id: Saburo hash: 8 data: ename: Hato Saburo jname: 鳩三郎 addr : 鎌倉市小町 hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: Ueno ***EMPTY*** id: Ranran hash: 9 data: ename: Ueno Ranran jname: 上野蘭々 addr : 台東区上野公園 hashtable[12] id: ***EMPTY***
![struct record x ename Mitsuki Mausu jname 三月磨臼 addr 浦安市舞浜 オープンアドレッシング法 レコード7件目取り出し struct struct record x ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜 オープンアドレッシング法 レコード7件目取り出し struct](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-27.jpg)
struct record x ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜 オープンアドレッシング法 レコード7件目取り出し struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: ***EMPTY*** hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: Hato ***EMPTY*** id: Saburo hash: 8 data: ename: Hato Saburo jname: 鳩三郎 addr : 鎌倉市小町 hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: Ueno ***EMPTY*** id: Ranran hash: 9 data: ename: Ueno Ranran jname: 上野蘭々 addr : 台東区上野公園 hashtable[12] id: ***EMPTY***
![オープンアドレッシング法 レコード7件目ハッシュ関数計算 struct record x ename Mitsuki Mausu jname 三月磨臼 addr 浦安市舞浜 hashMitsuki オープンアドレッシング法 レコード7件目ハッシュ関数計算 struct record x ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜 hash(“Mitsuki](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-28.jpg)
オープンアドレッシング法 レコード7件目ハッシュ関数計算 struct record x ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜 hash(“Mitsuki Mausu”) = 10 → すでに埋まっている(衝突) struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: ***EMPTY*** hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: Hato ***EMPTY*** id: Saburo hash: 8 data: ename: Hato Saburo jname: 鳩三郎 addr : 鎌倉市小町 hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: Ueno ***EMPTY*** id: Ranran hash: 9 data: ename: Ueno Ranran jname: 上野蘭々 addr : 台東区上野公園 hashtable[12] id: ***EMPTY***
![struct record x ename Mitsuki Mausu jname 三月磨臼 addr 浦安市舞浜 オープンアドレッシング法 レコード7件目ハッシュ関数再計算 hashMitsuki struct record x ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜 オープンアドレッシング法 レコード7件目ハッシュ関数再計算 hash(“Mitsuki](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-29.jpg)
struct record x ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜 オープンアドレッシング法 レコード7件目ハッシュ関数再計算 hash(“Mitsuki Mausu”) = 10 → すでに埋まっている(衝突) rehash(“Mitsuki Mausu”, 1) = 11 → すでに埋まっている(衝突) struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: ***EMPTY*** hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: Hato ***EMPTY*** id: Saburo hash: 8 data: ename: Hato Saburo jname: 鳩三郎 addr : 鎌倉市小町 hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: Ueno ***EMPTY*** id: Ranran hash: 9 data: ename: Ueno Ranran jname: 上野蘭々 addr : 台東区上野公園 hashtable[12] id: ***EMPTY***
![struct record x ename Mitsuki Mausu jname 三月磨臼 addr 浦安市舞浜 オープンアドレッシング法 レコード7件目ハッシュ関数再々計算 struct struct record x ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜 オープンアドレッシング法 レコード7件目ハッシュ関数再々計算 struct](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-30.jpg)
struct record x ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜 オープンアドレッシング法 レコード7件目ハッシュ関数再々計算 struct record dummy hash(“Mitsuki Mausu”) = 10 → すでに埋まっている(衝突) rehash(“Mitsuki Mausu”, 1) = 11 → すでに埋まっている(衝突) rehash(“Mitsuki Mausu”, 2) = 12 ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: ***EMPTY*** hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: Hato ***EMPTY*** id: Saburo hash: 8 data: ename: Hato Saburo jname: 鳩三郎 addr : 鎌倉市小町 hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: Ueno ***EMPTY*** id: Ranran hash: 9 data: ename: Ueno Ranran jname: 上野蘭々 addr : 台東区上野公園 hashtable[12] id: ***EMPTY***
![オープンアドレッシング法 レコード7件目ハッシュ表へ登録 struct record x ename Mitsuki Mausu jname 三月磨臼 addr 浦安市舞浜 struct オープンアドレッシング法 レコード7件目ハッシュ表へ登録 struct record x ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜 struct](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-31.jpg)
オープンアドレッシング法 レコード7件目ハッシュ表へ登録 struct record x ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜 struct record dummy hash(“Mitsuki Mausu”) = 10 → すでに埋まっている(衝突) rehash(“Mitsuki Mausu”, 1) = 11 → すでに埋まっている(衝突) rehash(“Mitsuki Mausu”, 2) = 12 ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: ***EMPTY*** hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: Hato ***EMPTY*** id: Saburo hash: 8 data: ename: Hato Saburo jname: 鳩三郎 addr : 鎌倉市小町 hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: Ueno ***EMPTY*** id: Ranran hash: 9 data: ename: Ueno Ranran jname: 上野蘭々 addr : 台東区上野公園 hashtable[12] id: Mitsuki ***EMPTY*** id: Mausu hash: 10 data: ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜
![struct record x ename Nobi Toraemon jname 野比寅右衛門 addr 横須賀市野比 オープンアドレッシング法 レコード8件目取り出し struct struct record x ename: Nobi Toraemon jname: 野比寅右衛門 addr : 横須賀市野比 オープンアドレッシング法 レコード8件目取り出し struct](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-32.jpg)
struct record x ename: Nobi Toraemon jname: 野比寅右衛門 addr : 横須賀市野比 オープンアドレッシング法 レコード8件目取り出し struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: ***EMPTY*** hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: Hato ***EMPTY*** id: Saburo hash: 8 data: ename: Hato Saburo jname: 鳩三郎 addr : 鎌倉市小町 hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: Ueno ***EMPTY*** id: Ranran hash: 9 data: ename: Ueno Ranran jname: 上野蘭々 addr : 台東区上野公園 hashtable[12] id: Mitsuki ***EMPTY*** id: Mausu hash: 10 data: ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜
![オープンアドレッシング法 レコード8件目ハッシュ関数計算 struct record x ename Nobi Toraemon jname 野比寅右衛門 addr 横須賀市野比 hashNobi オープンアドレッシング法 レコード8件目ハッシュ関数計算 struct record x ename: Nobi Toraemon jname: 野比寅右衛門 addr : 横須賀市野比 hash(“Nobi](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-33.jpg)
オープンアドレッシング法 レコード8件目ハッシュ関数計算 struct record x ename: Nobi Toraemon jname: 野比寅右衛門 addr : 横須賀市野比 hash(“Nobi Toraemon”) = 0 → すでに埋まっている(衝突) struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: ***EMPTY*** hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: Hato ***EMPTY*** id: Saburo hash: 8 data: ename: Hato Saburo jname: 鳩三郎 addr : 鎌倉市小町 hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: Ueno ***EMPTY*** id: Ranran hash: 9 data: ename: Ueno Ranran jname: 上野蘭々 addr : 台東区上野公園 hashtable[12] id: Mitsuki ***EMPTY*** id: Mausu hash: 10 data: ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜
![オープンアドレッシング法 レコード8件目ハッシュ関数計算 struct record x ename Nobi Toraemon jname 野比寅右衛門 addr 横須賀市野比 hashNobi オープンアドレッシング法 レコード8件目ハッシュ関数計算 struct record x ename: Nobi Toraemon jname: 野比寅右衛門 addr : 横須賀市野比 hash(“Nobi](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-34.jpg)
オープンアドレッシング法 レコード8件目ハッシュ関数計算 struct record x ename: Nobi Toraemon jname: 野比寅右衛門 addr : 横須賀市野比 hash(“Nobi Toraemon”) = 0 → すでに埋まっている(衝突) rehash(“Nobi Toraemon”, 1) = 1 struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: ***EMPTY*** hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: Hato ***EMPTY*** id: Saburo hash: 8 data: ename: Hato Saburo jname: 鳩三郎 addr : 鎌倉市小町 hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: Ueno ***EMPTY*** id: Ranran hash: 9 data: ename: Ueno Ranran jname: 上野蘭々 addr : 台東区上野公園 hashtable[12] id: Mitsuki ***EMPTY*** id: Mausu hash: 10 data: ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜
![オープンアドレッシング法 レコード8件目ハッシュ表へ登録 struct record x ename Nobi Toraemon jname 野比寅右衛門 addr 横須賀市野比 hashNobi オープンアドレッシング法 レコード8件目ハッシュ表へ登録 struct record x ename: Nobi Toraemon jname: 野比寅右衛門 addr : 横須賀市野比 hash(“Nobi](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-35.jpg)
オープンアドレッシング法 レコード8件目ハッシュ表へ登録 struct record x ename: Nobi Toraemon jname: 野比寅右衛門 addr : 横須賀市野比 hash(“Nobi Toraemon”) = 0 → すでに埋まっている(衝突) rehash(“Nobi Toraemon”, 1) = 1 struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: Nobi ***EMPTY*** id: Toraemon hash: 0 data: ename: Nobi Toraemon jname: 野比寅右衛門 addr : 横須賀市野比 hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: Hato ***EMPTY*** id: Saburo hash: 8 data: ename: Hato Saburo jname: 鳩三郎 addr : 鎌倉市小町 hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: Ueno ***EMPTY*** id: Ranran hash: 9 data: ename: Ueno Ranran jname: 上野蘭々 addr : 台東区上野公園 hashtable[12] id: Mitsuki ***EMPTY*** id: Mausu hash: 10 data: ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜
![struct record x ename jname addr オープンアドレッシング法 登録後 struct record dummy ename Yokohama struct record x ename: jname: addr : オープンアドレッシング法 登録後 struct record dummy ename: Yokohama](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-36.jpg)
struct record x ename: jname: addr : オープンアドレッシング法 登録後 struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: Nobi ***EMPTY*** id: Toraemon hash: 0 data: ename: Nobi Toraemon jname: 野比寅右衛門 addr : 横須賀市野比 hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); ↑ハッシュ表の状態が印刷される hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: Hato ***EMPTY*** id: Saburo hash: 8 data: ename: Hato Saburo jname: 鳩三郎 addr : 鎌倉市小町 hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: Ueno ***EMPTY*** id: Ranran hash: 9 data: ename: Ueno Ranran jname: 上野蘭々 addr : 台東区上野公園 hashtable[12] id: Mitsuki ***EMPTY*** id: Mausu hash: 10 data: ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜
![struct record x ename jname addr オープンアドレッシング法 重複データ登録の試み struct record dummy ename Yokohama struct record x ename: jname: addr : オープンアドレッシング法 重複データ登録の試み struct record dummy ename: Yokohama](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-37.jpg)
struct record x ename: jname: addr : オープンアドレッシング法 重複データ登録の試み struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: Nobi ***EMPTY*** id: Toraemon hash: 0 data: ename: Nobi Toraemon jname: 野比寅右衛門 addr : 横須賀市野比 hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: Hato ***EMPTY*** id: Saburo hash: 8 data: ename: Hato Saburo jname: 鳩三郎 addr : 鎌倉市小町 hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: Ueno ***EMPTY*** id: Ranran hash: 9 data: ename: Ueno Ranran jname: 上野蘭々 addr : 台東区上野公園 hashtable[12] id: Mitsuki ***EMPTY*** id: Mausu hash: 10 data: ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜
![オープンアドレッシング法 重複データ登録の試み struct record x ename jname addr hashYokohama Kunihiro 8 struct オープンアドレッシング法 重複データ登録の試み struct record x ename: jname: addr : hash(“Yokohama Kunihiro”) = 8 struct](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-38.jpg)
オープンアドレッシング法 重複データ登録の試み struct record x ename: jname: addr : hash(“Yokohama Kunihiro”) = 8 struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: Nobi ***EMPTY*** id: Toraemon hash: 0 data: ename: Nobi Toraemon jname: 野比寅右衛門 addr : 横須賀市野比 hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); “Yokohama Kunihiro” は、 すでに登録されているので登録拒否 hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: Hato ***EMPTY*** id: Saburo hash: 8 data: ename: Hato Saburo jname: 鳩三郎 addr : 鎌倉市小町 hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: Ueno ***EMPTY*** id: Ranran hash: 9 data: ename: Ueno Ranran jname: 上野蘭々 addr : 台東区上野公園 hashtable[12] id: Mitsuki ***EMPTY*** id: Mausu hash: 10 data: ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜
![オープンアドレッシング法 探索 1 struct record x ename jname addr hashHato Saburo 8 該当せず オープンアドレッシング法 探索 1 struct record x ename: jname: addr : hash(“Hato Saburo”) = 8 → 該当せず](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-39.jpg)
オープンアドレッシング法 探索 1 struct record x ename: jname: addr : hash(“Hato Saburo”) = 8 → 該当せず struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: Nobi ***EMPTY*** id: Toraemon hash: 0 data: ename: Nobi Toraemon jname: 野比寅右衛門 addr : 横須賀市野比 hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: Hato ***EMPTY*** id: Saburo hash: 8 data: ename: Hato Saburo jname: 鳩三郎 addr : 鎌倉市小町 hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: Ueno ***EMPTY*** id: Ranran hash: 9 data: ename: Ueno Ranran jname: 上野蘭々 addr : 台東区上野公園 hashtable[12] id: Mitsuki ***EMPTY*** id: Mausu hash: 10 data: ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜
![オープンアドレッシング法 探索 1 struct record x ename jname addr hashHato Saburo 8 該当せず オープンアドレッシング法 探索 1 struct record x ename: jname: addr : hash(“Hato Saburo”) = 8 → 該当せず](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-40.jpg)
オープンアドレッシング法 探索 1 struct record x ename: jname: addr : hash(“Hato Saburo”) = 8 → 該当せず :見つかるか、または、1周するかEMPTY(存在しないことを確認する)まで再ハッシュ struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: Nobi ***EMPTY*** id: Toraemon hash: 0 data: ename: Nobi Toraemon jname: 野比寅右衛門 addr : 横須賀市野比 hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: Hato ***EMPTY*** id: Saburo hash: 8 data: ename: Hato Saburo jname: 鳩三郎 addr : 鎌倉市小町 hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: Ueno ***EMPTY*** id: Ranran hash: 9 data: ename: Ueno Ranran jname: 上野蘭々 addr : 台東区上野公園 hashtable[12] id: Mitsuki ***EMPTY*** id: Mausu hash: 10 data: ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜
![オープンアドレッシング法 探索 1 struct record x ename jname addr struct record dummy hashHato オープンアドレッシング法 探索 1 struct record x ename: jname: addr : struct record dummy hash(“Hato](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-41.jpg)
オープンアドレッシング法 探索 1 struct record x ename: jname: addr : struct record dummy hash(“Hato Saburo”) = 8 → 該当せず :見つかるか、または、EMPTYか1周する(存在しないことを確認する)まで再ハッシュ rehash(“Hato Saburo”) = 9 → 発見! ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: Nobi ***EMPTY*** id: Toraemon hash: 0 data: ename: Nobi Toraemon jname: 野比寅右衛門 addr : 横須賀市野比 hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); found <(8) Hato Saburo 鳩三郎 鎌倉市小町> 再ハッシュにより発見 hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: Hato ***EMPTY*** id: Saburo hash: 8 data: ename: Hato Saburo jname: 鳩三郎 addr : 鎌倉市小町 hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: Ueno ***EMPTY*** id: Ranran hash: 9 data: ename: Ueno Ranran jname: 上野蘭々 addr : 台東区上野公園 hashtable[12] id: Mitsuki ***EMPTY*** id: Mausu hash: 10 data: ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜
![オープンアドレッシング法 探索 2 struct record x ename jname addr hashYokohama Kunihiro 8 オープンアドレッシング法 探索 2 struct record x ename: jname: addr : hash(“Yokohama Kunihiro”) = 8](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-42.jpg)
オープンアドレッシング法 探索 2 struct record x ename: jname: addr : hash(“Yokohama Kunihiro”) = 8 → 発見 struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: Nobi ***EMPTY*** id: Toraemon hash: 0 data: ename: Nobi Toraemon jname: 野比寅右衛門 addr : 横須賀市野比 hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); found <(8) Yokohama Kunihiro 横浜国大 1度の探索で発見 hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: Hato ***EMPTY*** id: Saburo hash: 8 data: ename: Hato Saburo jname: 鳩三郎 addr : 鎌倉市小町 hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: Ueno ***EMPTY*** id: Ranran hash: 9 data: ename: Ueno Ranran jname: 上野蘭々 addr : 台東区上野公園 hashtable[12] id: Mitsuki ***EMPTY*** id: Mausu hash: 10 data: ename: Mitsuki Mausu jname: 三月磨臼 横浜市保土ヶ谷区常盤台>addr : 浦安市舞浜
![struct record x ename jname addr オープンアドレッシング法 削除 1 struct record dummy ename struct record x ename: jname: addr : オープンアドレッシング法 削除 1 struct record dummy ename:](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-43.jpg)
struct record x ename: jname: addr : オープンアドレッシング法 削除 1 struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: Nobi ***EMPTY*** id: Toraemon hash: 0 data: ename: Nobi Toraemon jname: 野比寅右衛門 addr : 横須賀市野比 hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: Hato ***EMPTY*** id: Saburo hash: 8 data: ename: Hato Saburo jname: 鳩三郎 addr : 鎌倉市小町 hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: Ueno ***EMPTY*** id: Ranran hash: 9 data: ename: Ueno Ranran jname: 上野蘭々 addr : 台東区上野公園 hashtable[12] id: Mitsuki ***EMPTY*** id: Mausu hash: 10 data: ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜
![オープンアドレッシング法 削除 1 探索 struct record x ename jname addr hashHato Saburo オープンアドレッシング法 削除 1: 探索 struct record x ename: jname: addr : hash(“Hato Saburo”) =](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-44.jpg)
オープンアドレッシング法 削除 1: 探索 struct record x ename: jname: addr : hash(“Hato Saburo”) = 8 → 該当せず struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: Nobi ***EMPTY*** id: Toraemon hash: 0 data: ename: Nobi Toraemon jname: 野比寅右衛門 addr : 横須賀市野比 hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: Hato ***EMPTY*** id: Saburo hash: 8 data: ename: Hato Saburo jname: 鳩三郎 addr : 鎌倉市小町 hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: Ueno ***EMPTY*** id: Ranran hash: 9 data: ename: Ueno Ranran jname: 上野蘭々 addr : 台東区上野公園 hashtable[12] id: Mitsuki ***EMPTY*** id: Mausu hash: 10 data: ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜
![オープンアドレッシング法 削除 1 探索 struct record x ename jname addr hashHato Saburo オープンアドレッシング法 削除 1: 探索 struct record x ename: jname: addr : hash(“Hato Saburo”) =](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-45.jpg)
オープンアドレッシング法 削除 1: 探索 struct record x ename: jname: addr : hash(“Hato Saburo”) = 8 → 該当せず :見つかるか、または、1周するかEMPTY(存在しないことを確認する)まで再ハッシュ struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: Nobi ***EMPTY*** id: Toraemon hash: 0 data: ename: Nobi Toraemon jname: 野比寅右衛門 addr : 横須賀市野比 hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: Hato ***EMPTY*** id: Saburo hash: 8 data: ename: Hato Saburo jname: 鳩三郎 addr : 鎌倉市小町 hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: Ueno ***EMPTY*** id: Ranran hash: 9 data: ename: Ueno Ranran jname: 上野蘭々 addr : 台東区上野公園 hashtable[12] id: Mitsuki ***EMPTY*** id: Mausu hash: 10 data: ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜
![オープンアドレッシング法 削除 1 探索 struct record x ename jname addr struct record dummy オープンアドレッシング法 削除 1: 探索 struct record x ename: jname: addr : struct record dummy](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-46.jpg)
オープンアドレッシング法 削除 1: 探索 struct record x ename: jname: addr : struct record dummy hash(“Hato Saburo”) = 8 → 該当せず :見つかるか、または、EMPTYか1周する(存在しないことを確認する)まで再ハッシュ rehash(“Hato Saburo”, 1) = 9 → 発見! ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: Nobi ***EMPTY*** id: Toraemon hash: 0 data: ename: Nobi Toraemon jname: 野比寅右衛門 addr : 横須賀市野比 hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: Hato ***EMPTY*** id: Saburo hash: 8 data: ename: Hato Saburo jname: 鳩三郎 addr : 鎌倉市小町 hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: Ueno ***EMPTY*** id: Ranran hash: 9 data: ename: Ueno Ranran jname: 上野蘭々 addr : 台東区上野公園 hashtable[12] id: Mitsuki ***EMPTY*** id: Mausu hash: 10 data: ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜
![オープンアドレッシング法 削除 1 idに削除済を記録 struct record x ename jname addr struct record dummy オープンアドレッシング法 削除 1: idに「削除済」を記録 struct record x ename: jname: addr : struct record dummy](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-47.jpg)
オープンアドレッシング法 削除 1: idに「削除済」を記録 struct record x ename: jname: addr : struct record dummy hash(“Hato Saburo”) = 8 → 該当せず :見つかるか、または、EMPTYか1周する(存在しないことを確認する)まで再ハッシュ rehash(“Hato Saburo”, 1) = 9 → 発見! ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: Nobi ***EMPTY*** id: Toraemon hash: 0 data: ename: Nobi Toraemon jname: 野比寅右衛門 addr : 横須賀市野比 hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: **DELETED** hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: Ueno ***EMPTY*** id: Ranran hash: 9 data: ename: Ueno Ranran jname: 上野蘭々 addr : 台東区上野公園 hashtable[12] id: Mitsuki ***EMPTY*** id: Mausu hash: 10 • EMPTY(空)ではなくDELETED(削除済)と記録するのは、 data: 別の探索の際に、rehashする必要があるから ename: Mitsuki Mausu jname: 三月磨臼 • DELETEDの箇所の扱いは次のとおり • 探索時: 再ハッシュして続きを探索すべき(EMPTYと異なる) addr : 浦安市舞浜 • 挿入時: 挿入可能(EMPTYと同じ扱い)
![struct record x ename jname addr オープンアドレッシング法 削除 2 struct record dummy ename struct record x ename: jname: addr : オープンアドレッシング法 削除 2 struct record dummy ename:](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-48.jpg)
struct record x ename: jname: addr : オープンアドレッシング法 削除 2 struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: Nobi ***EMPTY*** id: Toraemon hash: 0 data: ename: Nobi Toraemon jname: 野比寅右衛門 addr : 横須賀市野比 hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: **DELETED** hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: Ueno ***EMPTY*** id: Ranran hash: 9 data: ename: Ueno Ranran jname: 上野蘭々 addr : 台東区上野公園 hashtable[12] id: Mitsuki ***EMPTY*** id: Mausu hash: 10 data: ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜
![オープンアドレッシング法 削除 2 探索 struct record x ename jname addr hashUeno Ranran オープンアドレッシング法 削除 2: 探索 struct record x ename: jname: addr : hash(“Ueno Ranran”) =](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-49.jpg)
オープンアドレッシング法 削除 2: 探索 struct record x ename: jname: addr : hash(“Ueno Ranran”) = 9 → ここは「削除済」: 該当せず、かつ、続きにある可能性 struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: Nobi ***EMPTY*** id: Toraemon hash: 0 data: ename: Nobi Toraemon jname: 野比寅右衛門 addr : 横須賀市野比 hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: **DELETED** hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: Ueno ***EMPTY*** id: Ranran hash: 9 data: ename: Ueno Ranran jname: 上野蘭々 addr : 台東区上野公園 hashtable[12] id: Mitsuki ***EMPTY*** id: Mausu hash: 10 data: ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜
![オープンアドレッシング法 削除 2 探索再ハッシュ struct record x ename jname addr hashUeno Ranran オープンアドレッシング法 削除 2: 探索(再ハッシュ) struct record x ename: jname: addr : hash(“Ueno Ranran”) =](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-50.jpg)
オープンアドレッシング法 削除 2: 探索(再ハッシュ) struct record x ename: jname: addr : hash(“Ueno Ranran”) = 9 → ここは「削除済」: 該当せず、かつ、続きにある可能性 :見つかるか、または、1周するかEMPTY(存在しないことを確認する)まで再ハッシュ struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: Nobi ***EMPTY*** id: Toraemon hash: 0 data: ename: Nobi Toraemon jname: 野比寅右衛門 addr : 横須賀市野比 hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: **DELETED** hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: Ueno ***EMPTY*** id: Ranran hash: 9 data: ename: Ueno Ranran jname: 上野蘭々 addr : 台東区上野公園 hashtable[12] id: Mitsuki ***EMPTY*** id: Mausu hash: 10 data: ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜
![オープンアドレッシング法 削除 2 探索再ハッシュ struct record x ename jname addr struct record dummy オープンアドレッシング法 削除 2: 探索(再ハッシュ) struct record x ename: jname: addr : struct record dummy](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-51.jpg)
オープンアドレッシング法 削除 2: 探索(再ハッシュ) struct record x ename: jname: addr : struct record dummy hash(“Ueno Ranran”) = 9 → ここは「削除済」: 該当せず、かつ、続きにある可能性 :見つかるか、または、1周するかEMPTY(存在しないことを確認する)まで再ハッシュ rehash(“Ueno Ranran”, 1) = 10 → 該当せず ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: Nobi ***EMPTY*** id: Toraemon hash: 0 data: ename: Nobi Toraemon jname: 野比寅右衛門 addr : 横須賀市野比 hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: **DELETED** hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: Ueno ***EMPTY*** id: Ranran hash: 9 data: ename: Ueno Ranran jname: 上野蘭々 addr : 台東区上野公園 hashtable[12] id: Mitsuki ***EMPTY*** id: Mausu hash: 10 data: ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜
![オープンアドレッシング法 削除 2 探索再ハッシュ struct record x ename jname addr struct record dummy オープンアドレッシング法 削除 2: 探索(再ハッシュ) struct record x ename: jname: addr : struct record dummy](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-52.jpg)
オープンアドレッシング法 削除 2: 探索(再ハッシュ) struct record x ename: jname: addr : struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 hash(“Ueno Ranran”) = 9 → ここは「削除済」: 該当せず、かつ、続きにある可能性 :見つかるか、または、1周するかEMPTY(存在しないことを確認する)まで再ハッシュ rehash(“Ueno Ranran”, 1) = 10 → 該当せず rehash(“Ueno Ranran”, 2) = 11 → 発見! /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: Nobi ***EMPTY*** id: Toraemon hash: 0 data: ename: Nobi Toraemon jname: 野比寅右衛門 addr : 横須賀市野比 hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: **DELETED** hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: Ueno ***EMPTY*** id: Ranran hash: 9 data: ename: Ueno Ranran jname: 上野蘭々 addr : 台東区上野公園 hashtable[12] id: Mitsuki ***EMPTY*** id: Mausu hash: 10 data: ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜
![オープンアドレッシング法 削除 2 idに削除済を記録 struct record x ename jname addr struct record dummy オープンアドレッシング法 削除 2: idに「削除済」を記録 struct record x ename: jname: addr : struct record dummy](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-53.jpg)
オープンアドレッシング法 削除 2: idに「削除済」を記録 struct record x ename: jname: addr : struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 hash(“Ueno Ranran”) = 9 → ここは「削除済」: 該当せず、かつ、続きにある可能性 :見つかるか、または、1周するかEMPTY(存在しないことを確認する)まで再ハッシュ rehash(“Ueno Ranran”, 1) = 10 → 該当せず rehash(“Ueno Ranran”, 2) = 11 → 発見! /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: Nobi ***EMPTY*** id: Toraemon hash: 0 data: ename: Nobi Toraemon jname: 野比寅右衛門 addr : 横須賀市野比 hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: **DELETED** hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: **DELETED** /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); hashtable[12] id: Mitsuki ***EMPTY*** id: Mausu hash: 10 data: ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜
![struct record x ename jname addr オープンアドレッシング法 削除 3 struct record dummy ename struct record x ename: jname: addr : オープンアドレッシング法 削除 3 struct record dummy ename:](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-54.jpg)
struct record x ename: jname: addr : オープンアドレッシング法 削除 3 struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: Nobi ***EMPTY*** id: Toraemon hash: 0 data: ename: Nobi Toraemon jname: 野比寅右衛門 addr : 横須賀市野比 hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: **DELETED** hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: **DELETED** /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); hashtable[12] id: Mitsuki ***EMPTY*** id: Mausu hash: 10 data: ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜
![オープンアドレッシング法 削除 3 探索 struct record x ename jname addr hashNobi Toraemon オープンアドレッシング法 削除 3: 探索 struct record x ename: jname: addr : hash(“Nobi Toraemon”) =](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-55.jpg)
オープンアドレッシング法 削除 3: 探索 struct record x ename: jname: addr : hash(“Nobi Toraemon”) = 0 → 該当せず struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: Nobi ***EMPTY*** id: Toraemon hash: 0 data: ename: Nobi Toraemon jname: 野比寅右衛門 addr : 横須賀市野比 hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: **DELETED** hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: **DELETED** /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); hashtable[12] id: Mitsuki ***EMPTY*** id: Mausu hash: 10 data: ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜
![オープンアドレッシング法 削除 3 探索再ハッシュ struct record x ename jname addr hashNobi Toraemon オープンアドレッシング法 削除 3: 探索(再ハッシュ) struct record x ename: jname: addr : hash(“Nobi Toraemon”) =](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-56.jpg)
オープンアドレッシング法 削除 3: 探索(再ハッシュ) struct record x ename: jname: addr : hash(“Nobi Toraemon”) = 0 → 該当せず :見つかるか、または、1周するかEMPTY(存在しないことを確認する)まで再ハッシュ struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: Nobi ***EMPTY*** id: Toraemon hash: 0 data: ename: Nobi Toraemon jname: 野比寅右衛門 addr : 横須賀市野比 hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: **DELETED** hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: **DELETED** /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); hashtable[12] id: Mitsuki ***EMPTY*** id: Mausu hash: 10 data: ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜
![オープンアドレッシング法 削除 3 探索再ハッシュ struct record x ename jname addr struct record dummy オープンアドレッシング法 削除 3: 探索(再ハッシュ) struct record x ename: jname: addr : struct record dummy](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-57.jpg)
オープンアドレッシング法 削除 3: 探索(再ハッシュ) struct record x ename: jname: addr : struct record dummy hash(“Nobi Toraemon”) = 0 → 該当せず :見つかるか、または、1周するかEMPTY(存在しないことを確認する)まで再ハッシュ rehash(“Nobi Toraemon”, 1) = 1 → 発見! ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: Nobi ***EMPTY*** id: Toraemon hash: 0 data: ename: Nobi Toraemon jname: 野比寅右衛門 addr : 横須賀市野比 hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: **DELETED** hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: **DELETED** /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); hashtable[12] id: Mitsuki ***EMPTY*** id: Mausu hash: 10 data: ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜
![オープンアドレッシング法 削除 3 idに削除済を記録 struct record x ename jname addr struct record dummy オープンアドレッシング法 削除 3: idに「削除済」を記録 struct record x ename: jname: addr : struct record dummy](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-58.jpg)
オープンアドレッシング法 削除 3: idに「削除済」を記録 struct record x ename: jname: addr : struct record dummy hash(“Nobi Toraemon”) = 0 → 該当せず :見つかるか、または、1周するかEMPTY(存在しないことを確認する)まで再ハッシュ rehash(“Nobi Toraemon”, 1) = 1 → 発見! ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: **DELETED** hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: **DELETED** /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: **DELETED** /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); hashtable[12] id: Mitsuki ***EMPTY*** id: Mausu hash: 10 data: ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜
![struct record x ename jname addr オープンアドレッシング法 削除 4 struct record dummy ename struct record x ename: jname: addr : オープンアドレッシング法 削除 4 struct record dummy ename:](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-59.jpg)
struct record x ename: jname: addr : オープンアドレッシング法 削除 4 struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: **DELETED** hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: **DELETED** /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: **DELETED** /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); hashtable[12] id: Mitsuki ***EMPTY*** id: Mausu hash: 10 data: ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜
![オープンアドレッシング法 削除 4 探索 struct record x ename jname addr hashNanashi Gonbei オープンアドレッシング法 削除 4: 探索 struct record x ename: jname: addr : hash(“Nanashi Gonbei”) =](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-60.jpg)
オープンアドレッシング法 削除 4: 探索 struct record x ename: jname: addr : hash(“Nanashi Gonbei”) = 8 → 該当せず struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: **DELETED** hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: **DELETED** /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: **DELETED** /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); hashtable[12] id: Mitsuki ***EMPTY*** id: Mausu hash: 10 data: ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜
![オープンアドレッシング法 削除 4 探索 struct record x ename jname addr hashNanashi Gonbei オープンアドレッシング法 削除 4: 探索 struct record x ename: jname: addr : hash(“Nanashi Gonbei”) =](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-61.jpg)
オープンアドレッシング法 削除 4: 探索 struct record x ename: jname: addr : hash(“Nanashi Gonbei”) = 8 → 該当せず :見つかるか、または、1周するかEMPTY(存在しないことを確認する)まで再ハッシュ struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: **DELETED** hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: **DELETED** /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: **DELETED** /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); hashtable[12] id: Mitsuki ***EMPTY*** id: Mausu hash: 10 data: ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜
![オープンアドレッシング法 削除 4 探索再ハッシュ 1回目 struct record x ename jname addr struct record オープンアドレッシング法 削除 4: 探索(再ハッシュ 1回目) struct record x ename: jname: addr : struct record](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-62.jpg)
オープンアドレッシング法 削除 4: 探索(再ハッシュ 1回目) struct record x ename: jname: addr : struct record dummy hash(“Nanashi Gonbei”) = 8 → 該当せず :見つかるか、または、1周するかEMPTY(存在しないことを確認する)まで再ハッシュ rehash(“Nanashi Gonbei”, 1) = 9 → ここは「削除済」: 該当せず、かつ、続きにある可能性 ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: **DELETED** hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: **DELETED** /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: **DELETED** /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); hashtable[12] id: Mitsuki ***EMPTY*** id: Mausu hash: 10 data: ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜
![オープンアドレッシング法 削除 4 探索再ハッシュ 2回目 struct record x ename jname addr struct record オープンアドレッシング法 削除 4: 探索(再ハッシュ 2回目) struct record x ename: jname: addr : struct record](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-63.jpg)
オープンアドレッシング法 削除 4: 探索(再ハッシュ 2回目) struct record x ename: jname: addr : struct record dummy hash(“Nanashi Gonbei”) = 8 → 該当せず :見つかるか、または、1周するかEMPTY(存在しないことを確認する)まで再ハッシュ rehash(“Nanashi Gonbei”, 2) = 10 → 該当せず ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: **DELETED** hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: **DELETED** /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: **DELETED** /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); hashtable[12] id: Mitsuki ***EMPTY*** id: Mausu hash: 10 data: ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜
![オープンアドレッシング法 削除 4 探索再ハッシュ 3回目 struct record x ename jname addr struct record オープンアドレッシング法 削除 4: 探索(再ハッシュ 3回目) struct record x ename: jname: addr : struct record](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-64.jpg)
オープンアドレッシング法 削除 4: 探索(再ハッシュ 3回目) struct record x ename: jname: addr : struct record dummy hash(“Nanashi Gonbei”) = 8 → 該当せず :見つかるか、または、1周するかEMPTY(存在しないことを確認する)まで再ハッシュ rehash(“Nanashi Gonbei”, 3) = 11 → ここは「削除済」: 該当せず、かつ、続きにある可能性 ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: **DELETED** hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: **DELETED** /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: **DELETED** /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); hashtable[12] id: Mitsuki ***EMPTY*** id: Mausu hash: 10 data: ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜
![オープンアドレッシング法 削除 4 探索再ハッシュ 4回目 struct record x ename jname addr struct record オープンアドレッシング法 削除 4: 探索(再ハッシュ 4回目) struct record x ename: jname: addr : struct record](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-65.jpg)
オープンアドレッシング法 削除 4: 探索(再ハッシュ 4回目) struct record x ename: jname: addr : struct record dummy hash(“Nanashi Gonbei”) = 8 → 該当せず :見つかるか、または、1周するかEMPTY(存在しないことを確認する)まで再ハッシュ rehash(“Nanashi Gonbei”, 4) = 12 → 該当せず ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: **DELETED** hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: **DELETED** /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: **DELETED** /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); hashtable[12] id: Mitsuki ***EMPTY*** id: Mausu hash: 10 data: ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜
![オープンアドレッシング法 削除 4 探索再ハッシュ 5回目 struct record x ename jname addr struct record オープンアドレッシング法 削除 4: 探索(再ハッシュ 5回目) struct record x ename: jname: addr : struct record](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-66.jpg)
オープンアドレッシング法 削除 4: 探索(再ハッシュ 5回目) struct record x ename: jname: addr : struct record dummy hash(“Nanashi Gonbei”) = 8 → 該当せず :見つかるか、または、1周するかEMPTY(存在しないことを確認する)まで再ハッシュ rehash(“Nanashi Gonbei”, 5) = 0 → 該当せず ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: **DELETED** hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: **DELETED** /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: **DELETED** /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); hashtable[12] id: Mitsuki ***EMPTY*** id: Mausu hash: 10 data: ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜
![オープンアドレッシング法 削除 4 探索再ハッシュ 6回目 struct record x ename jname addr struct record オープンアドレッシング法 削除 4: 探索(再ハッシュ 6回目) struct record x ename: jname: addr : struct record](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-67.jpg)
オープンアドレッシング法 削除 4: 探索(再ハッシュ 6回目) struct record x ename: jname: addr : struct record dummy hash(“Nanashi Gonbei”) = 8 → 該当せず :見つかるか、または、1周するかEMPTY(存在しないことを確認する)まで再ハッシュ rehash(“Nanashi Gonbei”, 6) = 1 → ここは「削除済」: 該当せず、かつ、続きにある可能性 ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: **DELETED** hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: **DELETED** /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: **DELETED** /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); hashtable[12] id: Mitsuki ***EMPTY*** id: Mausu hash: 10 data: ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜
![オープンアドレッシング法 削除 4 探索再ハッシュ 7回目 struct record x ename jname addr struct record オープンアドレッシング法 削除 4: 探索(再ハッシュ 7回目) struct record x ename: jname: addr : struct record](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-68.jpg)
オープンアドレッシング法 削除 4: 探索(再ハッシュ 7回目) struct record x ename: jname: addr : struct record dummy hash(“Nanashi Gonbei”) = 8 → 該当せず :見つかるか、または、1周するかEMPTY(存在しないことを確認する)まで再ハッシュ rehash(“Nanashi Gonbei”, 7) = 2 → ここは「空」: 該当せず、かつ、続きにもないことが確定 ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: **DELETED** hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: **DELETED** /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: **DELETED** /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); 該当なし! 1回の探索+7回の再ハッシュ探索を費やした! hashtable[12] id: Mitsuki ***EMPTY*** id: Mausu hash: 10 data: ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜
![struct record x ename jname addr オープンアドレッシング法 削除 5 struct record dummy ename struct record x ename: jname: addr : オープンアドレッシング法 削除 5 struct record dummy ename:](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-69.jpg)
struct record x ename: jname: addr : オープンアドレッシング法 削除 5 struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: **DELETED** hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: **DELETED** /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: **DELETED** /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); hashtable[12] id: Mitsuki ***EMPTY*** id: Mausu hash: 10 data: ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜
![オープンアドレッシング法 削除 5 探索 struct record x ename jname addr hashYokohama Kunihiro オープンアドレッシング法 削除 5: 探索 struct record x ename: jname: addr : hash(“Yokohama Kunihiro”) =](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-70.jpg)
オープンアドレッシング法 削除 5: 探索 struct record x ename: jname: addr : hash(“Yokohama Kunihiro”) = 8 → 発見! struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: **DELETED** hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** hashtable[ 8] id: Yokohama ***EMPTY*** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜国大 addr : 横浜市保土ヶ谷区常盤台 hashtable[ 9] id: **DELETED** /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: **DELETED** /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); あくまでキーが一致するかどうかが条件なので、 削除されるアイテムはキーだけが一致し、 それ以外はdummyの内容と異なることに注意 hashtable[12] id: Mitsuki ***EMPTY*** id: Mausu hash: 10 data: ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜
![オープンアドレッシング法 削除 5 探索idに削除済を記録 struct record x ename jname addr hashYokohama Kunihiro オープンアドレッシング法 削除 5: 探索idに「削除済」を記録 struct record x ename: jname: addr : hash(“Yokohama Kunihiro”) =](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-71.jpg)
オープンアドレッシング法 削除 5: 探索idに「削除済」を記録 struct record x ename: jname: addr : hash(“Yokohama Kunihiro”) = 8 → 発見! struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: **DELETED** hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** hashtable[ 8] id: **DELETED** hashtable[ 9] id: **DELETED** /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: **DELETED** /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); あくまでキーが一致するかどうかが条件なので、 削除されるアイテムはキーだけが一致し、 それ以外はdummyの内容と異なることに注意 hashtable[12] id: Mitsuki ***EMPTY*** id: Mausu hash: 10 data: ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜
![struct record x ename jname addr オープンアドレッシング法 削除後 struct record dummy ename Yokohama struct record x ename: jname: addr : オープンアドレッシング法 削除後 struct record dummy ename: Yokohama](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-72.jpg)
struct record x ename: jname: addr : オープンアドレッシング法 削除後 struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: **DELETED** hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** hashtable[ 8] id: **DELETED** hashtable[ 9] id: **DELETED** /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: **DELETED** /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); hashtable[12] id: Mitsuki ***EMPTY*** id: Mausu hash: 10 data: ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜
![オープンアドレッシング法 探索 struct record x ename jname addr hashHato Saburo 8 オープンアドレッシング法 探索 struct record x ename: jname: addr : hash(“Hato Saburo”) = 8 →](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-73.jpg)
オープンアドレッシング法 探索 struct record x ename: jname: addr : hash(“Hato Saburo”) = 8 → DELETEDなので、続きを探索 struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: **DELETED** hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** hashtable[ 8] id: **DELETED** hashtable[ 9] id: **DELETED** /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: **DELETED** /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); hashtable[12] id: Mitsuki ***EMPTY*** id: Mausu hash: 10 data: ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜
![オープンアドレッシング法 探索 struct record x ename jname addr hashHato Saburo 8 オープンアドレッシング法 探索 struct record x ename: jname: addr : hash(“Hato Saburo”) = 8 →](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-74.jpg)
オープンアドレッシング法 探索 struct record x ename: jname: addr : hash(“Hato Saburo”) = 8 → DELETEDなので、続きを探索 rehash(“Hato Saburo”, 1) = 9 → DELETEDなので、続きを探索 struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: **DELETED** hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** hashtable[ 8] id: **DELETED** hashtable[ 9] id: **DELETED** /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: **DELETED** /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); hashtable[12] id: Mitsuki ***EMPTY*** id: Mausu hash: 10 data: ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜
![オープンアドレッシング法 探索 struct record x ename jname addr struct record dummy hashHato Saburo オープンアドレッシング法 探索 struct record x ename: jname: addr : struct record dummy hash(“Hato Saburo”)](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-75.jpg)
オープンアドレッシング法 探索 struct record x ename: jname: addr : struct record dummy hash(“Hato Saburo”) = 8 → DELETEDなので、続きを探索 rehash(“Hato Saburo”, 1) = 9 → DELETEDなので、続きを探索 rehash(“Hato Saburo”, 2) = 10 → キー不一致なので、続きを探索 ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: **DELETED** hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** hashtable[ 8] id: **DELETED** hashtable[ 9] id: **DELETED** /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: **DELETED** /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); hashtable[12] id: Mitsuki ***EMPTY*** id: Mausu hash: 10 data: ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜
![オープンアドレッシング法 探索 struct record x ename jname addr struct record dummy ename Yokohama オープンアドレッシング法 探索 struct record x ename: jname: addr : struct record dummy ename: Yokohama](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-76.jpg)
オープンアドレッシング法 探索 struct record x ename: jname: addr : struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 hash(“Hato Saburo”) = rehash(“Hato Saburo”, /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); 8 → 1) = 2) = 3) = DELETEDなので、続きを探索 9 → DELETEDなので、続きを探索 10 → キー不一致なので、続きを探索 11 → DELETEDなので、続きを探索 struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: **DELETED** hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** hashtable[ 8] id: **DELETED** hashtable[ 9] id: **DELETED** /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: **DELETED** /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); hashtable[12] id: Mitsuki ***EMPTY*** id: Mausu hash: 10 data: ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜
![オープンアドレッシング法 探索 struct record x ename jname addr struct record dummy ename Yokohama オープンアドレッシング法 探索 struct record x ename: jname: addr : struct record dummy ename: Yokohama](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-77.jpg)
オープンアドレッシング法 探索 struct record x ename: jname: addr : struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 hash(“Hato Saburo”) = rehash(“Hato Saburo”, /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); 8 → 1) = 2) = 3) = DELETEDなので、続きを探索 9 → DELETEDなので、続きを探索 10 → キー不一致なので、続きを探索 11 → DELETEDなので、続きを探索 struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: **DELETED** hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** hashtable[ 8] id: **DELETED** hashtable[ 9] id: **DELETED** /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: **DELETED** /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); rehash(“Hato Saburo”, 4) = 12 → hashtable[12] id: Mitsuki ***EMPTY*** id: Mausu hash: 10 キー不一致なので、続きを探索 data: ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜
![オープンアドレッシング法 探索 struct record x ename jname addr struct record dummy ename Yokohama オープンアドレッシング法 探索 struct record x ename: jname: addr : struct record dummy ename: Yokohama](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-78.jpg)
オープンアドレッシング法 探索 struct record x ename: jname: addr : struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 hash(“Hato Saburo”) = rehash(“Hato Saburo”, /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); 8 → 1) = 2) = 3) = DELETEDなので、続きを探索 9 → DELETEDなので、続きを探索 10 → キー不一致なので、続きを探索 11 → DELETEDなので、続きを探索 struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: **DELETED** hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** hashtable[ 8] id: **DELETED** hashtable[ 9] id: **DELETED** /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: **DELETED** /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); rehash(“Hato Saburo”, 4) = rehash(“Hato Saburo”, 5) = hashtable[12] id: Mitsuki ***EMPTY*** id: Mausu hash: 10 12 → キー不一致なので、続きを探索 data: 0 → キー不一致なので、続きを探索 ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜
![オープンアドレッシング法 探索 struct record x ename jname addr struct record dummy ename Yokohama オープンアドレッシング法 探索 struct record x ename: jname: addr : struct record dummy ename: Yokohama](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-79.jpg)
オープンアドレッシング法 探索 struct record x ename: jname: addr : struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 hash(“Hato Saburo”) = rehash(“Hato Saburo”, /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); 8 → 1) = 2) = 3) = DELETEDなので、続きを探索 9 → DELETEDなので、続きを探索 10 → キー不一致なので、続きを探索 11 → DELETEDなので、続きを探索 struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: **DELETED** hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** hashtable[ 8] id: **DELETED** hashtable[ 9] id: **DELETED** /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: **DELETED** /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); rehash(“Hato Saburo”, 4) = rehash(“Hato Saburo”, 5) = rehash(“Hato Saburo”, 6) = hashtable[12] id: Mitsuki ***EMPTY*** id: Mausu hash: 10 12 → キー不一致なので、続きを探索 data: 0 → キー不一致なので、続きを探索 ename: Mitsuki Mausu jname: 三月磨臼 1 → DELETEDなので、続きを探索 addr : 浦安市舞浜
![オープンアドレッシング法 探索 struct record x ename jname addr struct record dummy ename Yokohama オープンアドレッシング法 探索 struct record x ename: jname: addr : struct record dummy ename: Yokohama](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-80.jpg)
オープンアドレッシング法 探索 struct record x ename: jname: addr : struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 hash(“Hato Saburo”) = rehash(“Hato Saburo”, /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); 8 → 1) = 2) = 3) = DELETEDなので、続きを探索 9 → DELETEDなので、続きを探索 10 → キー不一致なので、続きを探索 11 → DELETEDなので、続きを探索 struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: **DELETED** hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** hashtable[ 8] id: **DELETED** hashtable[ 9] id: **DELETED** /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: **DELETED** /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); hashtable[12] id: Mitsuki ***EMPTY*** id: Mausu hash: 10 12 → キー不一致なので、続きを探索 data: 0 → キー不一致なので、続きを探索 ename: Mitsuki Mausu jname: 三月磨臼 1 → DELETEDなので、続きを探索 addr : 浦安市舞浜 rehash(“Hato Saburo”, 4) = rehash(“Hato Saburo”, 5) = rehash(“Hato Saburo”, 6) = rehash(“Hato Saburo”, 7) = 2 → EMPTYなので、ないことを確認 → “Hato Saburo”をidとするアイテムは存在しない!
![オープンアドレッシング法 探索 struct record x ename jname addr struct record dummy ename Yokohama オープンアドレッシング法 探索 struct record x ename: jname: addr : struct record dummy ename: Yokohama](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-81.jpg)
オープンアドレッシング法 探索 struct record x ename: jname: addr : struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 hash(“Yokohama Kunihiro”) = rehash(“Yokohama Kunihiro”, /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); 8 → 1) = 2) = 3) = DELETEDなので、続きを探索 9 → DELETEDなので、続きを探索 10 → キー不一致なので、続きを探索 11 → DELETEDなので、続きを探索 struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: **DELETED** hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** hashtable[ 8] id: **DELETED** hashtable[ 9] id: **DELETED** /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: **DELETED** /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); hashtable[12] id: Mitsuki ***EMPTY*** id: Mausu hash: 10 data: 12 → キー不一致なので、続きを探索 ename: Mitsuki Mausu 0 → キー不一致なので、続きを探索 1 → DELETEDなので、続きを探索jname: 三月磨臼 addr : 浦安市舞浜 rehash(“Yokohama Kunihiro”, 4) = rehash(“Yokohama Kunihiro”, 5) = rehash(“Yokohama Kunihiro”, 6) = rehash(“Yokohama Kunihiro”, 7) = 2 → EMPTYなので、ないことを確認 → “Yokohama Kunihiro”をidとするアイテムは存在しない!
![オープンアドレッシング法 挿入 struct record x ename jname addr hashYokohama Kunihiro 8 struct オープンアドレッシング法 挿入 struct record x ename: jname: addr : hash(“Yokohama Kunihiro”) = 8 struct](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-82.jpg)
オープンアドレッシング法 挿入 struct record x ename: jname: addr : hash(“Yokohama Kunihiro”) = 8 struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: **DELETED** hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** hashtable[ 8] id: **DELETED** hashtable[ 9] id: **DELETED** /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: **DELETED** /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); 今回挿入するレコードの内容は、 dummyに書かれている内容であることに注意 hashtable[12] id: Mitsuki ***EMPTY*** id: Mausu hash: 10 data: ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜
![オープンアドレッシング法 挿入 struct record x ename jname addr hashYokohama Kunihiro 8 オープンアドレッシング法 挿入 struct record x ename: jname: addr : hash(“Yokohama Kunihiro”) = 8 →](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-83.jpg)
オープンアドレッシング法 挿入 struct record x ename: jname: addr : hash(“Yokohama Kunihiro”) = 8 → DELETEDなので、挿入可能 struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: **DELETED** hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** hashtable[ 8] id: **DELETED** hashtable[ 9] id: **DELETED** /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: **DELETED** /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); 今回挿入するレコードの内容は、 dummyに書かれている内容であることに注意 hashtable[12] id: Mitsuki ***EMPTY*** id: Mausu hash: 10 data: ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜
![オープンアドレッシング法 挿入 struct record x ename jname addr hashYokohama Kunihiro 8 オープンアドレッシング法 挿入 struct record x ename: jname: addr : hash(“Yokohama Kunihiro”) = 8 →](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-84.jpg)
オープンアドレッシング法 挿入 struct record x ename: jname: addr : hash(“Yokohama Kunihiro”) = 8 → DELETEDなので、挿入可能 struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: **DELETED** hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** hashtable[ 8] id: Yokohama **DELETED** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 hashtable[ 9] id: **DELETED** /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: **DELETED** /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); 今回挿入するレコードの内容は、 dummyに書かれている内容であることに注意 hashtable[12] id: Mitsuki ***EMPTY*** id: Mausu hash: 10 data: ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜
![struct record x ename jname addr オープンアドレッシング法 挿入後 struct record dummy ename Yokohama struct record x ename: jname: addr : オープンアドレッシング法 挿入後 struct record dummy ename: Yokohama](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-85.jpg)
struct record x ename: jname: addr : オープンアドレッシング法 挿入後 struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: **DELETED** hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** hashtable[ 8] id: Yokohama **DELETED** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 hashtable[ 9] id: **DELETED** /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: **DELETED** /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); 今回挿入するレコードの内容は、 dummyに書かれている内容であることに注意 hashtable[12] id: Mitsuki ***EMPTY*** id: Mausu hash: 10 data: ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜
![オープンアドレッシング法 探索 1 struct record x ename jname addr hashYokohama Kunihiro 8 オープンアドレッシング法 探索 1 struct record x ename: jname: addr : hash(“Yokohama Kunihiro”) = 8](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-86.jpg)
オープンアドレッシング法 探索 1 struct record x ename: jname: addr : hash(“Yokohama Kunihiro”) = 8 struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: **DELETED** hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** hashtable[ 8] id: Yokohama **DELETED** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 hashtable[ 9] id: **DELETED** /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: **DELETED** /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); found <(8) Yokohama Kunihiro 横浜邦博 横浜市中区日本大通> 今度の結果は、先ほど新たに挿入されたデータであることに注意 hashtable[12] id: Mitsuki ***EMPTY*** id: Mausu hash: 10 data: ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜
![struct record x ename jname addr オープンアドレッシング法 終了直前の状態 struct record dummy ename Yokohama struct record x ename: jname: addr : オープンアドレッシング法 終了直前の状態 struct record dummy ename: Yokohama](https://slidetodoc.com/presentation_image/01b2561a7902136ccab22d82e720b646/image-87.jpg)
struct record x ename: jname: addr : オープンアドレッシング法 終了直前の状態 struct record dummy ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 /* ハッシュ表初期化 */ makenull(hashtable); printhashtable(hashtable); /* 初期データ登録 */ while( getrecord(&x) ) insert(&x, x. ename, hashtable); printhashtable(hashtable); struct item hashtable[B] hashtable[ 0] id: Ashigara ***EMPTY*** id: Kintaro hash: 0 data: ename: Ashigara Kintaro jname: 足柄金太郎 addr : 南足柄市金時山 hashtable[ 4] id: Kanagawa ***EMPTY*** id: Hanako hash: 4 data: ename: Kanagawa Hanako jname: 神奈川花子 addr : 横浜市神奈川区三ッ沢上町 hashtable[ 1] id: **DELETED** hashtable[ 5] id: ***EMPTY*** hashtable[ 2] id: ***EMPTY*** hashtable[ 6] id: ***EMPTY*** hashtable[ 3] id: ***EMPTY*** hashtable[ 7] id: ***EMPTY*** hashtable[ 8] id: Yokohama **DELETED** id: Kunihiro hash: 8 data: ename: Yokohama Kunihiro jname: 横浜邦博 addr : 横浜市中区日本大通 hashtable[ 9] id: **DELETED** /* 重複データの登録試み */ insert(&dummy, dummy. ename, hashtable); /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* ハッシュ表からのデータ削除 */ delete("Hato Saburo", hashtable); delete("Ueno Ranran", hashtable); delete("Nobi Toraemon", hashtable); delete("Nanashi Gonbei", hashtable); delete(dummy. ename, hashtable); printhashtable(hashtable); hashtable[10] id: Hojo ***EMPTY*** id: Umeko hash: 9 data: ename: Hojo Umeko jname: 北条梅子 addr : 小田原市城山 hashtable[11] id: **DELETED** /* ハッシュ表を対象とした探索 */ printsearch("Hato Saburo", hashtable); printsearch(dummy. ename, hashtable); /* 再登録・再探索 */ printf("===Re-insert===n"); insert(&dummy, dummy. ename, hashtable); printsearch("Mitsuki Mausu", hashtable); printhashtable(hashtable); まとめ • 動的データ管理: 探索、挿入、削除 → 記録できる量に制限あり • ハッシュ表の探索開始箇所を見つけるには、O(1): 登録済みのデータ件数には依存しない • ハッシュ表の要素リストの中からアイテムを見つけるには、 再ハッシュ回数に依存 O( N ) (最悪時) hashtable[12] id: Mitsuki ***EMPTY*** id: Mausu hash: 10 data: ename: Mitsuki Mausu jname: 三月磨臼 addr : 浦安市舞浜
Ename
Typedef struct tree
Copying a struct in c
Typedef struct node
Typedef struct tree int info struct *left
Struct node int data struct node* next
Database trigger will fire when the table is truncated
Select deptno avg(sal) from emp
Empno ename sal
Specimen record observation
Struct em c
Typedef struct node
Typedef struct tag
Racket struct
Struct
C attribute packed
Struct node int i float j
Pricechar
Main() struct char name 25 charlanguage 10
Listnode
H
Struct dirent
Struct point int x y
Struct public private
Typedef struct
Struct in c++
Struct sock
C string
I struct
Module_init vs probe
C# struct vs class
C++ struct partial initialization
Tag structure in c
Sem_undo
Struct stat
Struct file_operations
Vc b b
Struct sample int a=0
Typedef struct en c
Struct student char *name
Typedef struct tree int info
Words with root struct
C doubly linked list
Typedef struct node
Typedef union
Clear struct
What are structure
Jenis struktur data kue sering digunakan untuk
What is the difference between class and struct
Readonly struct
Typedef struct node int value
Umbraco
Struct student char *name
Desempeño
Struct listnode
Fungsi dari tipe data struct adalah
Typedef struct c
Struct point int x y
Matlab isstruct
Nodenext
Typedef struct in c
引線二元樹
Cs105 pomona
Struct node int data
Specimen record observation
Soap record keeping
Maximo automation script duplicate record
Importance of daily time record
Runtime storage management in compiler design
What are the 10 warmest years on record?
Dyned şifre alma
This is a permanent record organized by account number
Ifta record keeping requirements
Dividend policy example
Types of medical records
Protrusive relation record
Pengertian excel macro
Intake and output record example
Yang merupakan pengertian dari rekaman data adalah
Mullen scales of early learning scoring
My health record
Traditional record keeping
Digital fault recorder
Nslp production record template
Ferpa meaning
Master file table forensics
Activation record in java
Record base material