赞
踩
- #include<stdio.h>
- #include<stdlib.h>
- #include<time.h>
-
- #define HASHLENGTH 10
-
- struct node
- {
- int data;
- struct node *next;
- };
- struct node hash[HASHLENGTH];
- typedef struct node * HashNode;
-
- int Hash(int k)
- {
- return k%HASHLENGTH;
- }
-
- void CreateHash()
- {
- for(int i=0; i<HASHLENGTH; i++)
- {
- hash[i].data = i;
- hash[i].next = NULL;
- }
- }
- void PrintOneLink(struct node h)
- {
- HashNode ptr = h.next;
- while(ptr != NULL)
- {
- printf("%d ", ptr->data);
- ptr = ptr->next;
- }
- printf("\n");
- }
-
- void PrintHash()
- {
- for(int i=0; i<HASHLENGTH; i++)
- {
- printf("hash[%d]:", i);
- PrintOneLink(hash[i]);
- }
- }
-
- bool SearchHash(int data)
- {
- int p = Hash(data);
- HashNode ptr = hash[p].next;
- while(ptr != NULL && ptr->data!=data)
- {
- ptr = ptr->next;
- }
- if(ptr == NULL)
- return false;
- return true;
- }
-
- int InsertHash(int data)
- {
- if(SearchHash(data)==true)
- {
- return 0;
- }
- else
- {
- int p = Hash(data);
- HashNode hn = (HashNode)malloc(sizeof(struct node));
- hn->data = data;
- hn->next = NULL;
- if(hash[p].next == NULL)
- {
- hash[p].next = hn;
- }
- else
- {
- hn->next = hash[p].next;
- hash[p].next = hn;
- }
- }
- return 1;
- }
-
- void DeleteHash(int data)
- {
- if(SearchHash(data)==true)
- {
- int p = Hash(data);
- HashNode ptr = hash[p].next;
- HashNode prePtr = ptr;
- if(ptr->data == data)
- {
- hash[p].next = ptr->next;
- free (ptr);
- }
- else
- {
- while(ptr != NULL && ptr->data != data)
- {
- prePtr = ptr;
- ptr = ptr->next;
- }
- prePtr->next = ptr->next;
- free(ptr);
- }
- }
- else
- {
- printf("Don't have the number\n");
- }
- }
-
- void HashTest()
- {
- CreateHash();
- int data = -99;
- srand( (unsigned)time(NULL) );
- for(int i=0; i<30; i++)
- {
- data = rand();
- InsertHash(data);
- }
- PrintHash();
- printf("Enter a number to delete:");
- while(scanf("%d", &data) != EOF)
- {
- DeleteHash(data);
- PrintHash();
- printf("Enter a number to delete:");
- }
- }
-
- int main()
- {
- HashTest();
- return 0;
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。