HashTable 简述
2018-06-17 23:35:19来源:未知 阅读 ()
#include <stdio.h> #define M 100 #define Hash_key = 29 template <class T> struct HashNode { T data; int key; int isNull; HashNode<T>* pNext; HashNode(){ pNext = NULL; isNull = 1; } }; template <class T> class HashTable { private: HashNode<T> m_HashNodes[M]; int getHashAddress(int key) { return key % Hash_key; } public: HashTable(){ // for (i=0; i<M; i++) { // m_HashNodes[i].isNull = 0; // } } bool insert(int key,T data) { int address = this.getHashAddress(key); if (m_HashNodes[address].isNull == 1) { m_HashNodes[address].data = data; m_HashNodes[address].isNull == 0; } else { // while (m_HashNodes[address].isNull == 0 && address <M) { // 线性探测法, 开发地址法 // address++; // } // if (address == M) { // return false; // } // HashNode<T>* pTmpNode = m_HashNodes[address].pNext; // 链地址法 HashNode<T>* pCurNode = NULL while (pTmpNode != NULL) { pCurNode = pTmpNode; pTmpNode = pTmpNode->pNext; } pCurNode->pNext = new HashNode<T>(); pCurNode->pNext->data = data; pCurNode->pNext->key = key; pCurNode->pNext->isNull = 0; } } HashNode<T> find(int key) { int address = this.getHashAddress(key); HashNode<T> node = m_HashNodes[address]; if (node.key == key){ return &node.data; } else { pCur = m_HashNodes[address].pNext; while (pCur != NULL){ if (pCur->key == key) { return pCur; } else { pCur = pCur->pNext; } } return NULL } } }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 简述c和c++的基本区别,你真的懂吗?(面试必学) 2019-12-06
- 架构设计:业务逻辑层简述 2019-11-21
- 冒泡排序 2019-08-16
- 线段树模板简略解释 2018-06-29
- (旧)子数涵数·C语言——指针 2018-06-18
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash