(二)彻底搞懂数据结构线性表

数据结构

二、线性表

2.1线性表的逻辑结构

线性表是具有相同特性数据元素的有限序列

2.2线性表的存储结构

第一个元素没有直接前驱元素,最后一个元素没有直接后继元素,其他元素都有唯一的前驱和后继元素。线性表有顺序存储结构链式存储结构

2.2.1顺序存储结构

是指将线性表中的各个元素依次存放在一组地址连续的存储单元中,通常将这种方法存储的线性表称为顺序表。
顺序存储结构的优缺点:

  • 优点:无须关心表中元素之间的关系,所以不用增加额外的存储空间;可以快速地取表中任意位置的元素。
  • 缺点:插入和删除操作需要移动大量元素。使用前需事先分配好内存空间,当线性表长度变化较大时,难以确定存储空间的容量。分配空间过大会造成存储空间的巨大浪费,分配的空间过小,难以适应问题的需求。
2.2.2链式存储结构

一、单链表:
在这里插入图片描述
上图第一个为含有头结点的单链表,第二个为不含头结点的单链表。

  • 头结点不含任何信息,它后边就是存储第一个数据信息的结点即开始结点,链表最后一个存储数据信息的结点即尾结点
  • 判断列表是否为空(如果为空再进行删除时就会出错,所以有必要判断是否为空):
    不管哪一种链表,只要不含数据结点,它就是空链表。
    1.对于含有头结点的单链表:头结点的next指针为空的话,它就是空链表,即
    在这里插入图片描述
    2.对于不含头结点的单链表:头结点为空的话,它就是空链表,即
    在这里插入图片描述

二、双链表:

在这里插入图片描述

  • 判断列表是否为空(如果为空再进行删除时就会出错,所以有必要判断是否为空):
    与单链表一样。

三、循环链表:
在这里插入图片描述
上图第一个为含头结点的单循环链表,第二个为含头结点的双循环链表。

  • 判断链表是否为空(如果为空再进行删除时就会出错,所以有必要判断是否为空):
    1.对于含有头结点的链表
    1>.单循环链表:当头结点的指针指向它本身时为空。
    2>.双循环链表:当头结点的两个指针都指向它本身时为空。
  • 单循环链表和双循环链表不管什么时候都不会有空指针。
    2.对于不含头结点的链表
    Head指针为空时。
    在这里插入图片描述
发布了110 篇原创文章 · 获赞 370 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/zag666/article/details/105121716