线性表-单链表

链式存储结构:动态存储过程。根据所需要的元素(结点)随时申请存储空间(不需要连续的空间),即逻辑上连续的元素(结点)不要求物理(存储)上也连续,它是通过所谓的“链”拉起来。

单链表

设有一线性表,元素分别是a1、a2和a3,存储情形如下:


image.png

每个元素都包含两个域(数据元素信息和指向链表中另一个结点的指针)。即,


image.png

此时称各元素为“结点”,由一个“链”拉起来,称为链表。由于指针是向一个单方向指,所以称作“单链表”(后面还会有前后两个方向的指针指向的链表称为“双链表”)。为形象起见,将前面的存储方式画成下述情况(要了解图形的真实含义)。即,
image.png

其中:
head称为头指针(head放置头结点的起始地址);
a1所在的结点称为头结点;
a3所在的结点称为尾结点(其指针域为空,即NULL,用斜线表示)。
单链表的头结点(a1)没有前驱,尾结点(a3)没有后继,而结点(a2)只有唯一的前驱和唯一的后继结点,所以符合“线性”特点。

C语言表示

  • 定义
typedef int ElemType;   
 typedef struct Node
{
  ElemType data;
  struct Node *next;// 递归定义
} LNode,*LinkList; 

其中:LNode为结构体类型,而LinkList为结构体指针类型
LNode *head,*p,*L;//头指针和指针或LinkList head,p,L;

对结点P的数据域和指针域的表示:


image.png

为方便起见,专门为单链表设置一个专用“头结点”作为标志,它的数据域无意义,而指针域指向链表的第一个结点。于是出现“带”和“不带”头结点的单链表。

  • “带”头结点的单链表


    image.png
  • “不带”头结点的单链表


    image.png

注意:L称为头指针(有时也用head),操作链表时它总是指向头结点(千万不能丢),操作链表时,要另设辅助指针协助。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容