当前位置:  技术问答>linux和unix

(在线等) 问个哈希桶的数据结构中那个二级指针的问题

    来源: 互联网  发布时间:2017-01-23

    本文导语:  struct hlist_head {       struct hlist_node *first; }; struct hlist_node {       struct hlist_node *next, **pprev; }; 我把struct hlist_node的结构换为: struct hlist_node {       struct hlist_node *next, *pprev; }; 程序依旧可以运行,我就...



struct hlist_head {
      struct hlist_node *first;
};
struct hlist_node {
      struct hlist_node *next, **pprev;
};


我把struct hlist_node的结构换为:



struct hlist_node {
      struct hlist_node *next, *pprev;
};



程序依旧可以运行,我就是不理解这里为什么需要二级指针,可以通俗点给我说明白么?我在网上找说是因为要判断是不是first结点,但我还是不明白,谢谢回答!!!!

|
这里的pprev不是指向前一个元素的指针,而是指向前一个元素next指针的指针,所以它得是二级指针
以删除一个元素n来说,这样设计的好处在于,你的接口只需要给入要删除的元素
如rem_ele(struct hlist_node *ele);
因为n->pprev相当于n的前一个元素(假设是m)的next指针,所以只需要n->pprev = n->next就够了
可以参考下:
http://blog.csdn.net/qy532846454/article/details/5207298

|
很简单,需要修改哈希表桶数组。

一个哈希表是这样的:hlist_node* *hash_tables;

hash_tables[5]=NULL;

然后你插入了一个node,于是node->next=hash_tables[5]; hash_table[5]=node; node->pre=null;

现在hash_tables[5]=node; 相当于把Node插入到hash_tables[5]的头部,node现在就是头。

删除node,发现node->pre==null,所以判定node是一个桶的第一结点,删除第一个Node不是这样:
node->pre=node->next; delete node; 
而是要让hash_talbes[5]=node->next; 这时候就必须要hlist_node* *pre了:
*node->pre=node->next;

hash_tables* [100]; 这样写也许你能理解的更清楚点,你可以改变node->pre->next,但你不能这样改变hash_tables[5],除非你取到&hash_talbes[5],也就是hlist_node **pre。 然后*pre=node->next;

就这个道理,一级指针和二级指针,作用很不同。



    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 基于Html5的mockups在线工具简介
  • 装MYSQL后启动错误! mysqld ended --在线急等!在线急等!在线急等!在线急等!-----
  • 网络技术 iis7站长之家
  • 智能在线表单设计器 FreeForm智能在线表单设计器
  • Linux使用群24032501,保持20人在线,目标50人在线
  • 简单的输入输出问题 在线等待 在线给分
  • 怎么用能让asp实现统计在线人数的功能。在线等待!!!帮忙送分!
  • 在线求教, 为什么不能开始除root之外的用户登录??...很急, 在线等
  • 在线等,在线给分!(简单问题,急)
  • 我需要唯一用户在线,不能两个用户同时在线的JSP实现的设计文档
  • 在线等,在线给分!!!!!!!!!!
  • 在线求助!关于如何使用“信号”的方式来响应键盘按下的消息!在线急盼回复!
  • 如何判断在线用户,主要是如何判断用户关闭所有窗口(即他已经不在线了)?
  • 在线等几个简单问题解答,答出一个在线加50分。
  • 在线解压压缩 PclZip
  • 在线支持系统 CSLH
  • 在线视频编辑工具 Kaltura
  • 非常急,请问如何用JSP实现在线人数统计
  • 手机在线收音机 MFRadio
  • 在线客服系统 PHP Live!
  • 在线考试系统 TCExam


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3