首页 > 代码库 > 散列表
散列表
#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; }
散列表
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。