数据结构入门学习系列-4(线性表的链式存储)
2017-10-23 10:47
363 查看
上一篇讲了线性表中的线性存储,改文章学习一下线性表的链式存储结构。
链式存储:一组任意的存储单元来存储数据,而不必须是连续的存储的单元。因此为了正确表示数据间的逻辑关系,除了数据域域外,我们还需要一个指针域。
当一个节点只包含一个指针域的时候,该指针指向数据的后继节点,我们称为单链表。如下图所示:
一般单链表的第一个节点之前有一个头结点,head节点,该节点可以不存储任何数据信息。所以单链表是由头结点唯一确定的,因此可以用头指针来表示单链表。下面看一下单链表的逻辑结构和物理结构:
C语言中对该结构的抽象定义为:
LNode *p = (LNode *)malloc(sizeof(LNode));
p->data = 10; p->next=NULL;
free(p);
下面图示是一些常见的链表指针操作,请作参考:
这些操作都比较经典,后续的一些链表的增删改查基本算法中都有涉及。
链式存储:一组任意的存储单元来存储数据,而不必须是连续的存储的单元。因此为了正确表示数据间的逻辑关系,除了数据域域外,我们还需要一个指针域。
当一个节点只包含一个指针域的时候,该指针指向数据的后继节点,我们称为单链表。如下图所示:
data | *next |
C语言中对该结构的抽象定义为:
typedef struct LNode { ElemType data; struct LNode *next; } LNode;使用的时候,需要动态申请内存和动态释放内存:
LNode *p = (LNode *)malloc(sizeof(LNode));
p->data = 10; p->next=NULL;
free(p);
下面图示是一些常见的链表指针操作,请作参考:
这些操作都比较经典,后续的一些链表的增删改查基本算法中都有涉及。
相关文章推荐
- 艾伟_转载:C#版数据结构之--线性表的链式存储(单链表)
- 线性表的链式存储及相关操作 C语言版
- 线性表的Java实现--链式存储(双向链表)
- 数据结构-线性表的链式存储
- 线性表的链式存储实现(有头结点)
- 数据学习之线性表的链式存储C++实现
- 线性表的链式存储和实现
- Java基础 - 线性表之链式存储结构-双向链表
- 数据结构--链式存储线性表(LinkedList)
- 链式存储线性表(有头结点)
- 链式存储线性表(无头节点)
- 线性表链式存储C++实现
- 线性表的链式存储
- 数据结构——线性表的链式存储
- 线性表的链式存储的插入与删除操作
- 线性表的实现(二)链式存储
- 数据结构啊----线性表的链式存储
- 数据结构与算法基础(二)之线性表的链式存储与指针的概念
- 线性表之链式存储结构_单链表相关算法
- 数据结构:线性表的链式存储(双向链表)--Java实现