数据结构----线性表概念&顺序表


一、线性表基本概念

线性表是具有相同特性的数据元素的有限序列。元素有相同特性且为线性关系。
从具体应用种抽象出共性的逻辑结构和基本操作(抽象数据类型),然后实现其存储结构和基本操作。
在这里插入图片描述
顺序存储结构存在问题:存储空间分配不灵活以及运算的空间复杂度高。链式存储不需要额外的空间。
接下来会一一涉及顺序存储和链式存储

二、线性表的顺序表的表示和实现

1.线性表如何定义

顺序存储定义:逻辑上相邻的数据元素存储在物理上相邻的存储单元。(依次存储,占用一片连续的地址空间,中间没有空出存储单元;知道任一个元素位置,可以推算出其他元素存储位置;有任一元素可随机存取的优点)
在这里插入图片描述

2.类C语言

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
引用类型做形参是直接对实参操作,不产生实参的副本,时间和空间效率好。指针参数需要重复使用“*指针变量名”容易产生错误且阅读性较差。

3.顺序表示

两个部分来描述顺序表:顺序表的maxsize和表长。其逻辑位序和物理位序相差1。
顺序表是一个类型,Sqlist L,L是变量,是Sqlist这个类型的顺序表。
在这里插入图片描述

(1)基本操作

  1. 初始化
    在这里插入图片描述

  2. 删除
    在这里插入图片描述

  3. 清空
    在这里插入图片描述

  4. 求长度
    在这里插入图片描述

  5. 是否为空
    在这里插入图片描述

(2)顺序表的取值

在这里插入图片描述

(3)顺序表的查找

在这里插入图片描述
元素的序号和地址差一,故返回地址为序号加1
平均查找长度ASL为查找次数的期望值

(4)顺序表的插入

插入时,只能插入在(0,n+1),即元素紧挨相邻不空位置

  1. 插入位置在最后
    给最后一个元素赋值并且更改线性表长

  2. 插入位置在中间
    后面的元素依次后移

  3. 插入位置在最前面
    所有元素后移,第一个空出来之后插进去,表长加1。

9

(5)顺序表的删除

类似于插入,删除第i个位置的元素,就将i+1到n的数据都前移且表长减1。
在这里插入图片描述

总结

顺序表的时间复杂度都是O(n),空间复杂度都是O(1)(不需要辅助空间)。
优点:存储密度大+可以随机存取。
缺点:插入和删除时需要移动大量元素+定义数组会空着很多空间比较浪费+静态存储,数据个数不能自由扩充不灵活
存储密度:
在这里插入图片描述
链式存储优缺点:
在这里插入图片描述
顺序表和链表比较:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值