基于Hash表的房屋管理查询系统(数据结构)

(学习笔记、随笔,希望有什么错误不足可以及时指出方便改正学习交流,谢谢!)

        首先,我们需要了解到哈希查找的基本概念及单链表的基本结构;

        哈希表本质是一种数据结构,又可以称为散列表。它的底层本质是数组,其中数组元素可以简单理解为地址(Node *hash[SIZE] ) ;为了方便理解,你可以直接理解为它是一个指针数组。哈希表一般由数组和链表构成 。     

        数组和单链表区别:

  1. 数组的内存是连续的,单链表不连续;
  2. 数组空间固定,链表空间不固定;
  3. 数组可以直接用下标访问元素,所以查找效率高,链表查找需要遍历,查找效率相对较低;
  4. 数组尾插效率最高,链表是头插效率最高;
  5. 数组的存储密度比链表的存储密度高;

程序功能介绍:(房屋管理查询系统)

根据用户需求查找选择合适户型展示,更加便捷实现楼盘的房产信息登记

实现----信息的建立(门牌号,楼层,户型及大小,价格)

实现----信息的添加(门牌号,楼层,户型及大小,价格)

实现----指定的查询(根据户型或者门牌号查询套房基本信息)

实现----房屋状态显示(显示房屋住入情况)

实现----信息的改动(房产变更导致信息变更)

实现----信息的删除(房产信息删除)

输入0即可退出该系统

数据结构的选择

散列表(哈希表)--实现查找功能----寻址查找容易,但插入和删除困难

单链表 ----实现数据储存--寻址困难,但插入和删除相对简单

实现过程

 

        程序定义的主要函数 :

static int hashFunc; //定义哈希函数
Hash *createHash(); //创建哈希表
Node *createNode(); //创建链表里节点
data_t *createData();//创建一个数据结构体,存储键入的数据
int insertItemHash(Hash *pHash,data_t *pdata);//添加
int searchItemHash(Hash *pHash,data_t *pdata);//查找
int updateItemHash(Hash *pHash,data_t *pdata);//更新
int showHash(Hash *pHash,data_t *pdata);//展示
int deleteItemHash(Hash *pHash,data_t *pdata);//删除
void destroyHash(Hash **ppHash);//注销

 

enum HASH_OP
{
    HASH_ERROR = -1,
    HASH_OK = 0,
    NOT_FOUND = 1
};//枚举

typedef struct data
{
    int isbn;//主key,即门牌号
    int floor;楼层
    char type[20];//户型及大小,定义为char类型
    float price;//价格
    int state;//房屋状态
}data_t;//数据域结构体

typedef struct Node
{
    data_t data;//节点的数据域
    struct Node *pNext;//节点的指针域
}Node;//节点

typedef struct Hash
{
    Node *hash[SIZE];//哈希表底层本质为数组,指针数组,数组元素为链表地址
    int count;//计数
}Hash;//哈希表

        程序主要分为三个部分:主函数,子函数和头文件

        

程序主函数 

        

 

 程序子函数

        

 

 

        

程序头文件 

 

 

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

......……_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值