码迷,mamicode.com
首页 > 其他好文 > 详细

散列表

时间:2014-12-24 13:29:19      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:散列表   分离链接   

#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;
}

散列表

标签:散列表   分离链接   

原文地址:http://blog.csdn.net/u013011841/article/details/42122293

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!