zoukankan      html  css  js  c++  java
  • 分离链接散列表的实现

    分离链接散列表的类型声明

    #ifndef _HashSep_H
    
    struct ListNode;
    typedef struct ListNode *Position;
    struct HashTbl;
    typedef struct HashTbl *HashTable;
    
    HashTable InitilizeTable(int TableSize);
    void DestroyTable(HashTable H);
    Position Find(ElementType Key,HashTable H);
    void Insert(ElementType Key,HashTable H);
    ElementType Retrieve(Position P);
    
    #endif
    
    struct ListNode
    {
    	ElementType Element;
    	Position Next;
    };
    struct HashTbl
    {
    	int TableSize;
    	List *TheLists;
    };
    

    分离链接散列表的初始化

    HashTable InitializeTable(int TableSize)
    {
    	HashTable H;
    	int i;
    	
    	if(TableSize < MinTableSize)
    	{
    		Error("Table size too small");
    		return NULL;
    	}
    	H = malloc(sizeof(struct HashTbl));
    	if(H == NULL)
    		FatalError("Out of space!!!");
    	H->TableSize = NextPrime(TableSize);
    	H->TheLists = malloc(sizeof(Lisr)*H->TableSize);
    	if(H->TheLists == NULL)
    		FatalError("Out of space!!!");
    	for(i = 0;i < H->TableSize; i++)
    	{
    		H->TheLists[i] = malloc(sizeof(struct ListNode));
    		if(H->TheLists[i] == NULL)
    			FatalError("Out of space!!!");
    		else
    			H->TheLists[i]->Next = NULL;
    	}
    	return H;
    }
    

    分离链接散列表的查找程序

    Position Find(ElementType Key,HashTable H)
    {
    	Position P;
    	List L;
    	L = H->TheLists[Hash(Key,H->TableSize)];
    	P = L->Next;
    	while(P != NULL && P->Element != Key)
    		P = P->Next;
    	return P;
    }
    

    分离链接散列表的插入程序

    void Insert(ElementType Key,HashTable H)
    {
    	Position Pos,NewCell;
    	List L;
    	Pos = Find(Key,H);
    	if(Pos == NULL)
    	{
    		NewCell = malloc(sizeof(struct ListNode));
    		if(NewCell == NULL)
    			FatalError("Out of space!!!");
    		else
    		{
    			L = H->TheLists[Hash(Key,H->TableSize)];
    			NewCell->Next = L->Next;
    			NewCell->Element = Key;
    			L->Next = NewCell;
    		}
    	}
    }
  • 相关阅读:
    ApacheServer-----关于443端口被占用的解决方法
    《小强与小明》——正在疯传的伟大的故事
    不争万年,只珍朝夕------我的态度
    dubbo搭建
    使用netty的第一个Hello World
    myBatis数据库常用标签
    mysql 索引
    tomcat部署项目的一点心得
    【康托展开】
    初探计算机硬盘
  • 原文地址:https://www.cnblogs.com/y3w3l/p/6365029.html
Copyright © 2011-2022 走看看