线性表的链式表示和实现

本文详细介绍了线性表的链式存储结构,包括单链表的定义、特点以及如何用C语言实现。内容涵盖首元结点、头结点、头指针的概念,链表的插入、删除、查找等操作,并讨论了链表的初始化、取值、按值查找、插入和删除等操作的时间复杂度。
摘要由CSDN通过智能技术生成

线性表链式存储结构的特点是:用一组任意的存储单元存储线性表的数据元素(这组存储单元可以是连续的,也可以是不连续的)。

单链表的定义和表示

  • 为了表示每个数据元素ai与其直接后继数据元素a(i+1)之间的逻辑关系,对数据元素ai来说,除了存储其本身的信息之外,还需存储一个指示其直接后继的信息(即直接后继的存储位置)。这两部分信息组成数据元素ai的存储映像,称为结点(node)。它包括两个域:其中存储数据元素信息的域为数据域;存储直接后继存储位置的域称为指针域。指针域中存储的信息称作指针或链。n个结点(ai(1<=i<=n)的存储映像)链结成一个链表,即为线性表的链式存储结构。又由于此链表的每个结点中只包含一个指针域,故又称线性链表或单链表
  • 根据链表结点所含指针个数、指针指向和指针连接方式,可将链表分为单链表、循环链表、双向链表、二叉链表、十字链表、邻接表、邻接多重表等。其中单链表、循环链表和双向链表用于实现线性表的链式存储结构,其他形式多用于实现树和图等非线性结构。
  • 线性表的单链表存储结构,整个链表的存取必须从头指针开始进行,头指针指示链表中第一个结点(即第一个数据元素的存储映像,也称首元结点)的存储位置。同时,由于最后一个数据元素没有直接后继,则单链表中最后一个结点的指针为空(NULL)。

  • 用单链表表示线性表时,数据元素之间的逻辑关系是由结点中的指针指示的。这种存储结构为非顺序映像或链式映像
  • 通常将链表画成用箭头相链接的结点的序列,结点之间的箭头表示链域中的指针。在使用链表时,关心的只是它所表示的线性表中数据元素之间的逻辑顺序,而不是每个数据元素在存储器中的实际位置。

单链表头可由头指针唯一确定,在C语言中可用“结构指针”来描述:

//- - - - -单链表的存储结构- - - - - 
typedef struct LNode
{
  ElemType  data;                  //结点的数据域
  struct LNode  *next;             //结点的指针
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值