线性表的链式存储

链式存储结构

  • 链式存储结构中的每个存储单元称为“结点”,结点包含一个数据域和一个指针域
  • 数据域存放数据元素信息;指针域存放后继结点地址;
  • 数据元素之间的逻辑关系通过结点中的指针表示;
  • 通常由第一个结点开始,逐一访问所有结点。
  • 具有n个数据元素的线性表对应的n个结点通过链接方式链接成一个链表,即为线性表的链式存储结构
    链式存储结构

单链表

链表中每个链结点中仅包含一个指针域,这样的链表成为单链表
单链表的结点结构:
单链表的结点结构
单链表结构:
单链表结构

带头结点的单链表

在链表的第一个结点之前附设一个结点,称为头结点
带头结点的单链表:头结点的引入使得单链表的头指针永远不为空,从而给插入、删除等操作带来了方便。
带头结点的单链表

结点的数据类型

typedef int ElemType;//ElemType数据元素的数据类型
typedef struct LNode//LNode为结点类型名
{
   
	ElemTpye data;//data代表数据元素
	struct LNode *next;//next为指向下一结点的指针
}LinkNode;//单链表结点类型

结点的数据类型

单链表的基本操作

//p、q为指向任意结点的指针

  • 空表:head -> next == NULL
    空表

  • 表尾:p -> next == NULL
    表尾

  • 指针后移:p = p->next
    指针后移(前)
    指针后移(后)

  • 结点连接:p -> next = q (q结点放在p结点之后)
    结点连接

  • 前驱:若p -> next == q,则p指向q的前驱结点

初始化单链表

void InitList(LinkNode *&L)
{
   //L为指向单链表的头指针
	L = new LinkNode;//分配空间,作为头结点
	L -> next = NULL;
}
时间复杂度:O(1)

在函数中,需要改变单链表的头指针,因此参数L设计为一个指针的引用,即引用的类型为指针,
初始化单链表

判断表空

bool ListEmpty
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
线性表链式存储结构是使用链式方式将线性表的元素存储起来。链表可以分为单链表、循环链表和双链表。在单链表,每个结点都包含指向下一个结点的指针。循环链表是在单链表的基础上,将最后一个结点的指针指向头结点,形成一个循环。而双链表则是在单链表的基础上,每个结点都包含指向前一个结点和后一个结点的指针。链表的存储单元可以是连续的,也可以是非连续的,甚至是零散分布在内存的任何位置上。因此,链表结点的逻辑顺序和物理顺序不一定相同。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [数据结构——线性表链式存储](https://blog.csdn.net/weixin_46272350/article/details/119612209)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [线性表链式存储结构..](https://download.csdn.net/download/N201871643/86035198)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值