【数据结构与算法】顺序表精讲

所属专栏:数据结构与算法

前期内容:

  1. 绪论1——抽象数据类型
  2. 绪论2——时间复杂度与空间复杂度
  3. 与时间复杂度相关的OJ面试题
  4. 抽象数据类型的实现

目录

1.1线性表的定义和特点

1.2案例引入

eg: 图书信息管理系统:

1.3线性表的类型定义

基本操作

1.4顺序表的顺序表示

顺序表的顺序表示

顺序表的特点

顺序表的实现

        概念及结构

代码实现


1.1线性表的定义和特点

        例如:

  •  12星座(双鱼、白羊、水瓶….)
    • 某单位历年拥有的计算机的数量(100、120…)
    • 26个英文字母(A,B,C,…,Z)

这些都是线性表。表中的每一项就是一个数据元素。在稍微复杂的线性表中,一个数据元素可以包含若干个数据项。

同一线性表中的元素必定具有相同特性,数据元素间的关系是线性关系。

对千非空的线性表或线性结构, 其特点是:

(1) 存在唯一的一个被称作 “第一个" 的数据元素;

(2)存在唯一的一个被称作 “最后一个" 的数据元素;

(3)除第一个之外, 结构中的每个数据元素均只有一个前驱;

(4)除最后一个之外,结构中的每个数据元素均只有一个后继。

 线性表是n个具有相同特性的数据元素的有限序列。线性表是一种实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串...

线性表在逻辑上是线性结构,也就是说是连续的一条直线,但在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。

1.2案例引入

eg: 图书信息管理系统:

需要的功能:查找、插入、删除、修改、排序、计数

图书表抽象为线性表

表中每本图书抽象线性表中的数据元素

可以使用:图书顺序表、图书链表

  • 选择适当的存储结构
  • 实现此存储结构上的基本操作
  • 利用基本操作完成功能

1.3线性表的类型定义

抽象数据类型线性表的定义如下:

ADT List{

数据对象:D={ai|ai属于Elemset,(i=1,2…,n,n>=0)}

数据关系:R={<ai-1,ai>|ai-1,ai属于D,(i=2,3,…,n)}

基本操作:

initList(&L);

DestroyList(&L);

….

等等

}ADT List

基本操作

  • InitList(&L)

操作结果:构造一个空的线性表L

  • DestroyList(&L)

初始条件:线性表L已经存在

操作结果:销毁线性表L

  • CharList(&L)

初始条件:线性表L已经存在

操作结果:将线性表L重置为空表

  • ListEmpty(L)

初始条件&#x

  • 11
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
顺序表是一种经典的数据结构,它可以用来存储一组具有相同数据类型的元素,并且这些元素在内存中是连续存储的。顺序表在内存中的存储方式类似于数组,因此可以通过下标来快速访问元素。 在顺序表中,元素的插入和删除操作可能会导致元素位置的移动,因此需要进行数据的搬移操作,这是其一个缺点。另外,顺序表的大小是固定的,一旦超过了预分配的空间,需要进行扩容操作。 算法是指解决问题的一系列步骤或规则。在数据结构与算法中,我们可以使用顺序表来实现各种常见的算法,比如线性查找、二分查找、插入排序、选择排序等等。 线性查找是一种简单的查找算法,它从顺序表的第一个元素开始逐个比较,直到找到目标元素或者遍历完整个顺序表。 二分查找是一种高效的查找算法,它只适用于有序顺序表,通过比较目标元素与中间元素的大小关系来确定查找范围,从而快速缩小查找范围。 插入排序是一种简单直观的排序算法,它通过构建有序子序列的方式来逐步扩大排序范围,将后面的元素插入到有序子序列的正确位置。 选择排序是一种简单的排序算法,它每次从未排序的元素中选择最小(或最大)的元素,然后放到已排序部分的末尾。 以上只是顺序表和部分相关算法的简单介绍,希望能对你有所帮助。如果你有更多关于顺序表算法的问题,请继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值