[数据结构] 线性表概述

初来乍到

  最近重温了一下严蔚敏教授的《数据结构》,以前模糊、不理解、无法实现的地方,现在有一种茅塞顿开的感觉。于是决定把自己的感悟讲解出来,并且将数据结构与算法一一实现。这样既可以提升自己的能力,也可以给后来者作为参考。同时如果我的见解或实现有什么不妥当、不合理的地方,希望各位朋友能够在评论区指出并且一同讨论。

线性表
    线性表是一种含有n个元素的有限序列。

  它具有如下特点:
  1. 存在唯一的一个被称作“第一个”的数据元素;
  2. 存在唯一的一个被称作“最后一个”的数据元素;
  3. 除第一个数据元素之外,集合中每个元素均只有一个直接前驱;
  4. 除最后一个数据元素之外,集合中每个元素均只有一个直接后继;
  例如:对于一个顺序表A:[6,13,2,9,17,4]来说,“第一个”数据元素为6;“最后一个”数据元素为4;除6以外,所有数据元素均只有一个直接前驱,每个数据元素的直接前驱分别为:6、13、2、9、17;除4以外,所有数据元素均只有一个直接后继,每个元素的直接后继分别为:13、2、9、17、4。
  ※需要注意的2点注意事项:
  1. 线性表的数据元素类型不一定是整型,字符型,浮点型等其他类型都可以,甚至是以若干个数据项结构化存储组成的结构类型作为线性表中的数据元素也可以。
  2. 线性表中的数据以位序描述其位置,是从1开始的(我也很想吐槽,但是这是事实,请暂时克服一下程序员的通病:从0计数)!

线性表基本操作

  一个线性表应该有:构造、销毁、清空、判断空表、获取表长、获取指定位置元素、获取指定元素首次出现的位置、获取指定位置前驱元素、获取指定位置的后继元素、插入新元素、删除某个位置的元素等基本操作。

线性表实现

  线性表有两种实现方式,根据实现的方式的不同分为顺序表与链表。
  其中顺序表是由数组来实现的,方便查找以及在最后增删元素,数据密度(实际存储数据占据的空间/数据元素整体占据的空间)大;
  链表根据是否带有头节点分为带头结点的链表与不带头结点的链表(感觉像是废话),根据数据元素的指针域个数分为单链表与双链表,此外还有循环链表(首尾呼应)与静态链表(使用数组存储,利用游标代替指针域)。
  在接下来的文章中我会分别对这些实现方式一一阐述与实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值