小鎮的技術天梯 從頭開始寫演算法,C語言hash表

2021-07-10 16:02:42 字數 1430 閱讀 6094

【有時候資料結構和演算法這種東西就是在時間和空間之間權衡,比如說當你想要維護乙個自平衡的二叉樹的時候就需要乙個額外的指標,當你想要排序的時候,需要乙個或者多個額外的空間來儲存臨時產生的資料一樣。】

hash表,有時候也被稱為雜湊表,可以理解成資料和hash表中整理的資料的多對一的關係,雜湊的規則可以自己隨意定製,但是最佳的雜湊規則應該保證每個雜湊出來的資料組中的個數都應該存有差不多數量的資料。比如說1到100的資料中,我們可以按照%10的規則來雜湊,這樣就可以保持每個雜湊組都有差不多8-9個的資料。

這個相對來說還是挺好理解的,hash表也用在了很多的地方,配合別的資料結構可以很好很高效地控制資料。

【下面提供個**,看看就好,難度很簡單】編譯命令  gcc -o *** zhash.c

/* 雜湊表例項 */

/* * author:鎮天宇

* 規則:%10雜湊

*/#include #include #include typedef struct z_hash_node

hash_node;

typedef struct z_hash_table

hash_table;

hash_table* create_hash_table()

hash_node* find_data_in_hash_table( hash_table* chashtbl, int data )

return(null);

}int insert_data_into_hash( hash_table* chashtbl, int data )

while ( cnode->next != null )

cnode = cnode->next;

cnode->next = (hash_node *) malloc( sizeof(hash_node) );

memset( cnode->next, 0, sizeof(hash_node) );

cnode->next->data = data;

return(1);

}int delete_data_from_hash(hash_table* chashtbl,int data)

chead=chashtbl->value[data%10];

while(cnode!=chead->next)

chead=chead->next;

chead->next=cnode->next;

final:

free(cnode);

return 1;

}/* 列印hash */

void print_hash_data( hash_table* chashtbl )

printf("\n"); }}

int main()

print_hash_data(htbl);

}

從頭開始學習c語言

以前的時候學習c語言時候認為c語言不過是乙個學習的工具,學習一些理論知識就達到目的了,誰會用這麼傻的語言啊,連個介面也沒有,不像vb一下子就做出乙個窗體來,放上幾個按鈕就可以了 後來學習c 的時候,認為c 與c是一種完全不同的語言,兩者基本沒有什麼相容性,當時在學校裡看書的時候,一直比較納悶為會c ...

從頭開始C語言 初識

一 注釋 1 statement 2 statement 3 真正從邏輯上刪除一段 if 0 statements endif 二 預處理指令 1 include 宣告標頭檔案,如 include 可訪問標準i o庫的函式 input output include 定義了exit success和e...

c語言從頭開始(六 函式

函式就是一組一起執行的語句,每個c程式至少有乙個函式,也就是main 函式。理論上來講,我們把所有的程式 都寫在主函式裡是沒有問題的。但是這會使主函式變得龐雜 頭緒不清,使得閱讀和維護程式變得困難。函式可以解決這些問題,而且,函式可以減少我們重複編寫同樣功能的 c 標準庫提供了大量的程式可以呼叫的內...