日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

大话数据结构:散列表

發布時間:2023/12/20 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 大话数据结构:散列表 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

基礎介紹

是一種存儲結構,就是構建一個函數,以輸入的關鍵字作為自變量,以地址作為因變量。具體實現有很多變種。

代碼

#include "stdio.h" #include "stdlib.h" #include "io.h" #include "math.h" #include "time.h"#define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0#define MAXSIZE 100 /* 存儲空間初始分配量 */#define SUCCESS 1 #define UNSUCCESS 0 #define HASHSIZE 12 /* 定義散列表長為數組的長度 */ #define NULLKEY -32768 typedef int Status; /* Status是函數的類型,其值是函數結果狀態代碼,如OK等 */typedef struct {int* elem; /* 數據元素存儲基址,動態分配數組 */int count; /* 當前數據元素個數 */ }HashTable;int m = 0; /* 散列表表長,全局變量 *//* 初始化散列表 */ Status InitHashTable(HashTable* H) {int i;m = HASHSIZE;H->count = m;H->elem = (int*)malloc(m * sizeof(int));for (i = 0; i < m; i++)H->elem[i] = NULLKEY;return OK; }/* 散列函數 */ int Hash(int key) {return key % m; /* 除留余數法 */ }/* 插入關鍵字進散列表 */ void InsertHash(HashTable* H, int key) {int addr = Hash(key); /* 求散列地址 */while (H->elem[addr] != NULLKEY) /* 如果不為空,則沖突 */{addr = (addr + 1) % m; /* 開放定址法的線性探測 */}H->elem[addr] = key; /* 直到有空位后插入關鍵字 */ }/* 散列表查找關鍵字 */ Status SearchHash(HashTable H, int key, int* addr) {*addr = Hash(key); /* 求散列地址 */while (H.elem[*addr] != key) /* 如果不為空,則沖突 */{*addr = (*addr + 1) % m; /* 開放定址法的線性探測 */if (H.elem[*addr] == NULLKEY || *addr == Hash(key)) /* 如果循環回到原點 */return UNSUCCESS; /* 則說明關鍵字不存在 */}return SUCCESS; }int main() {int arr[HASHSIZE] = { 12,67,56,16,25,37,22,29,15,47,48,34 };int i, p, key, result;HashTable H;key = 39;InitHashTable(&H);for (i = 0; i < m; i++)InsertHash(&H, arr[i]);result = SearchHash(H, key, &p);if (result)printf("查找 %d 的地址為:%d \n", key, p);elseprintf("查找 %d 失敗。\n", key);for (i = 0; i < m; i++){key = arr[i];SearchHash(H, key, &p);printf("查找 %d 的地址為:%d \n", key, p);}return 0; }

總結

以上是生活随笔為你收集整理的大话数据结构:散列表的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。