C语言中的双向链表
最近在看BIOS 中boot option相关的代码,看到一个地方突然蒙了,如下:
/// /// LIST_ENTRY structure definition. /// typedef struct _LIST_ENTRY LIST_ENTRY; /// /// _LIST_ENTRY structure definition. /// struct _LIST_ENTRY { LIST_ENTRY *ForwardLink; LIST_ENTRY *BackLink; };
网上查了一下,原来是一个双向链表, 这个还没有学过,脑中没什么概念, 那就学学吧!
有了单向链表,为什么还有双向链表? 区别是什么? 单向链表顾名思义, 就是只有一个方向, 我们在查询的时候只能从前到后查找, 要是想往前查找呢?单向是做不到的, 所以双向链表就出现了.
首先看下单向链表的定义:
struct list{ int data; struct list *next; };
示意图:
可以看到,单向链表是用一个next指针指向下一个节点的, 双向链表就是在此基础上加一个指向上一个节点的指针, 修改后如下:
struct list{ struct list *previous; int data; struct list *next; };
参考程序:
line* initLine(line * head){ head=(line*)malloc(sizeof(line));//创建链表第一个结点(首元结点) head->prior=NULL; head->next=NULL; head->data=1; line * list=head; for (int i=2; i<=3; i++) { //创建并初始化一个新结点 line * body=(line*)malloc(sizeof(line)); body->prior=NULL; body->next=NULL; body->data=i; list->next=body;//直接前趋结点的next指针指向新结点 body->prior=list;//新结点指向直接前趋结点 list=list->next; } return head; }
版权声明:
作者:bin
链接:https://ay123.net/mystudy/clan/692/
来源:爱影博客
文章版权归作者所有,未经允许请勿转载。
THE END
0
二维码
海报
C语言中的双向链表
最近在看BIOS 中boot option相关的代码,看到一个地方突然蒙了,如下:
///
/// LIST_ENTRY structure definition.
///
typedef struct&n……
共有 0 条评论