散列表

来源:互联网 发布:nginx 日志等级 编辑:程序博客网 时间:2024/05/15 00:05
#include<stdio.h>//链表typedef struct listNode{int val;listNode *next;listNode(int key):val(key),next(NULL){}listNode():val(0),next(NULL){}}*position;typedef position list;//散列表typedef struct hashTbl{int tableSize;list *theLists;}*hashTable;int hash(int key,int tableSize){return key%tableSize;}//散列表初始化hashTable init(int tableSize){//局部hashTable H;int i;//分配表H=new hashTbl();H->tableSize=tableSize;//分配链表数组H->theLists=new list[H->tableSize];//分配链表头for(int i=0;i<H->tableSize;i++){H->theLists[i]=new listNode();H->theLists[i]->next=NULL;}return H;}position find(int key,hashTable H){position p;list l;l=H->theLists[hash(key,H->tableSize)];p=l->next;while(p!=NULL && p->val!=key)p=p->next;return p;}//插入void insert(int key,hashTable H){//局部position pos,newCell;list l;//是否已存pos=find(key,H);//未存if(pos==NULL){newCell=new listNode(key);l=H->theLists[hash(key,H->tableSize)];newCell->next=l->next;l->next=newCell;}}int main(){hashTable H=init(5);insert(1,H);insert(2,H);insert(3,H);insert(6,H);return 0;}

0 0