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

这个链表是如何定义的?

    来源: 互联网  发布时间:2016-10-31

    本文导语:  ../linux/include/list.h struct list_head { struct list_head *next, *prev; }; | 内核的链表,没啥的。 定义一个list_head,再定义两个指针,分别指向前面的和后面的list_head。 | ../linux/include/list.h struc...

../linux/include/list.h

struct list_head {
struct list_head *next, *prev;
};

|
内核的链表,没啥的。

定义一个list_head,再定义两个指针,分别指向前面的和后面的list_head。

|
../linux/include/list.h

struct list_head {
struct list_head *next, *prev;
};

该结构是一个双向链表的头结点,所以没有数据域,和下面的定义是等价的:
struct list_head{
     struct list_head *       next;  //本该指向链表list的第一个结点
     struct list_head *       prev;  //本该指向链表list的最后一个结点
         
}
如果struct list_head 是如上结构没有没有数据域,即使多个这样结点链成一个双向链,也没什么意义。

双向链表list中结点list_node应该为如下结构:
struct list_node{
     struct list_node *       next; //指向该节点的下一个结点
     struct list_node *       prev; //指向该节点的前一个结点
    
     //应该还有个数据域
      date_type  data;     

}
而该双向链表的头结点list_head的结构应该如下:

struct list_head{
     struct list_node *       next;  //指向双向链表list的第一个结点
      struct list_node *       prev;  //指向双向链表list的最后一个结点
         
}
作为头结点,没有数据域。之所以要引入头结点的目的,是为了对双向链表的操作可以统一。做任何操作都从头结点开始。

    
 
 

您可能感兴趣的文章:

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












  • 相关文章推荐
  • java命名空间java.awt类radialgradientpaint的类成员方法: getradius定义及介绍
  • 请问可以用宏定义定义一个二维数组吗?
  • java命名空间javax.xml.stream类xmlinputfactory成员方法: seteventallocator定义参考
  • 想修改路径定义,想找到在哪里定义的,应该怎么办?
  • java命名空间java.text接口attributedcharacteriterator的类成员方法: getallattributekeys定义及介绍
  • php定义数组和使用示例(php数组的定义方法)
  • java命名空间java.beans接口propertyeditor的类成员方法: supportscustomeditor定义及介绍
  • 上次问题解决了,原来是extern被重定义了。。。天阿,关键字也可以被重定义。。。。。欢迎接分
  • java命名空间javax.swing类jtextarea的类成员方法: getcolumnwidth定义及介绍
  • 如何定义一个可变参数的自定义函数
  • java命名空间javax.swing类jtextfield的类成员方法: getcolumnwidth定义及介绍
  • 下面的变量我都下了定义,为什么还出现没定义的信息
  • java命名空间javax.swing类actionmap的类成员方法: allkeys定义及介绍
  • oracle异常(预定义异常,自定义异常)应用介绍
  • java命名空间javax.swing类inputmap的类成员方法: allkeys定义及介绍
  • 想修改路径定义,想找到在哪里定义的,应该怎么办? iis7站长之家
  • java命名空间javax.rmi.corba接口valuehandler的类成员方法: iscustommarshaled定义及介绍
  • 函数有定义怎么提示没有低能定义的错误呢?
  • java命名空间javax.swing类jcomponent的类成员方法: resetkeyboardactions定义及介绍
  • android自定义控件和自定义回调函数步骤示例
  • java命名空间java.beans接口customizer的类成员方法: setobject定义及介绍
  • 自定义公共类的装载,包的定义


  • 站内导航:


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

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

    浙ICP备11055608号-3