数据结构基本知识——线性表

172 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第16天,点击查看活动详情

线性表

线性表的定义

线性表是具有相同数据类型的若干数据元素的有限序列,除了第一个元素之外每一个元素都有一个唯一的直接前驱,除了最后一个元素外每个元素都有一个唯一的直接后继。

线性表的特点

  • 1)表中元素的个数有限
  • 2)表中元素具有逻辑上的顺序性
  • 3)每个元素都是数据元素,每个元素都是单个元素
  • 4)表中元素的数据类型都相同
  • 5)表示元素具有抽象性,即仅讨论元素间的逻辑关系,不考虑元素九九表示什么内容

线性表的基本操作

  • InitList(&L):初始化表。构造一个空的线性表。
  • Length(L):求表长。返回线性表L的长度,即L中数据元素的个数。
  • LocateElem(L, e):按值查找操作。在表L中查找具有给定关键字值的元素。
  • GetElem(L, i):按位查找操作。获取表L中第1个位置的元素的值。
  • ListInsert(&L, i, e):插入操作。在表L中第i个位置上插入指定元素e。
  • ListDelete(&L, i, &e):删除操作。删除表L中第i个位置的元素,并用e返回删除元素的值。
  • PrintList(L):输出操作。按前后顺序输出线性表L的所有元素值。
  • Empty(L):判空操作。若L为空表,则返回true,否则返回false。
  • DestroyList(&L):销毁操作。销毁线性表,并释放线性表L所占的内存空间。

顺序表

顺序表是线性表的顺序表示,使用一组地址连续的存储单元依次存储数据元素。

顺序表的特点是逻辑顺序与物理顺序相同,可以随机访问;存储密度高,每个结点只存储数据元素;顺序表逻辑相邻的元素物理上也相邻,所以插入和删除操作需要大量的移动元素。

链表

链表是线性表的链式存储,为了表示数据元素之间的关系,每个结点除了存储数据元素之外还存放一个指向后继结点的指针。

使用单链表可以解决顺序表需要大量连续存储单元的缺点,但是又带来了浪费存储空间的特点。

单链表分为带头结点和不带头结点的两种。不带头结点的链表第一个结点的位置就是头指针,带头结点的链表第一个结点指向后边一个相邻元素的地址是头指针。

头结点和头指针的区别

  • 1)首先头结点是结点,头指针是指针,结点对应的是数据,头指针指向的是地址。
  • 2)头指针指向的是链表的第一个结点,头结点通常不存储信息,他的下一结点是链表第一个结点。