- 拉链法实现HASH链表
- #include <stdio.h>
- #include <string.h>
- #define N 14
- #define M 14
- typedef struct struct_node{
- int key;
- }node;
- {
- }
- {
- int i = 0;
- for ( ; i < m ; i++ )
- hash_table[i] = NULL;
- return hash_table;
- }
- node **create_hash_table(node **hash_table,int *a)
- {
- node *m;
- for ( ; i < N ; i++ ) {
- if ( !m ) {
- }
- m->key = a[i];
- m->next = NULL;
- continue;
- }
- }
- return hash_table;
- }
- {
- node *p;
- int i = 0,hash_key;
- p = hash_table[hash_key];
- if ( !p )
- return NULL;
- while ( p ) {
- return p;
- p = p->next;
- }
- return NULL;
- }
- {
- node *p,*q,*head;
- if ( !p ) {
- return hash_table;
- }
- if ( p->next == NULL ) {
- return hash_table;
- }
- while ( p != NULL ) {
- return hash_table;
- }
- else{
- q->next = p->next;
- return hash_table;
- }
- }
- q = p;
- p = p->next;
- }
- return NULL;
- }
- void print_node(node *head)
- {
- if ( !head )
- return ;
- while ( head != NULL ) {
- head = head->next;
- }
- }
- void print_hash_table(node **hash_table)
- {
- int i = 0;
- for ( ; i < M ; i++ ) {
- print_node(hash_table[i]);
- }
- }
- void destroy_node(node *head)
- {
- node *p;
- while ( head != NULL ) {
- p = head->next;
- free(head);
- head = p;
- }
- }
- void destroy_hash_table(node **hash_table)
- {
- int i = 0;
- for ( ; i < N ; i++ )
- destroy_node(hash_table[i]);
- }
- int main(void)
- {
- node *hash_table[M],*p,**s;
- int a[N] = {47,7,29,11,16,92,22,8,3,50,37,89,94,21};
- create_hash_table(hash_table,a);
- print_hash_table(hash_table);
- p = search_node(hash_table,29);
- s = delete_node(hash_table,8);
- if ( !s )
- print_hash_table(s);
- destroy_hash_table(hash_table);
- return 0;
- }
搜尋此網誌
2011年5月14日 星期六
hash list
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言