线性表复习总结

文章介绍了线性数据结构的特点,包括线性表的概念,顺序表作为线性表的顺序存储表示,以及顺序表的访问、插入和删除操作。顺序表的优点在于随机访问元素的时间复杂度为O(1),但插入和删除操作由于涉及元素移动,时间复杂度为O(n)。此外,提到了时间复杂度和空间复杂度的概念,用于衡量算法效率。
摘要由CSDN通过智能技术生成

一、线性数据结构的特点

在数据元素的非空有限集中

1、存在唯一的一个被称做“第一个”的数据元素;

2、存在唯一的一个被称做“最后一个”的数据元素;

3、除了“第一个”外,集合中的每个元素均只有一个前驱;

4、除了“最后一个”外,集合中的每个元素均只有一个后继;

二、线性表

线性表是最简单的一种线性数据结构

线性表是由n个数据结构元素组成的有限序列,相邻数据元素之间存在着序偶关系:

<a1,a2>....<an-1,an>  其中下标i表示了元素ai的位置

线性表中的元素具有相同的特性,属于同一数据对象

三、顺序表

顺序表是线性表的顺序存储表示

采用一组地址连续的存储单位依次存储线性表中的数据元素

顺序表中元素的位置:

LOC(ai)=LOC(ai-1)+l

LOC(ai)=LOC(a1)+(i-1)*l

顺序表的定义和创建

#define MAXLISTLEN 100

//最大表长

int ListLen=;

当前表长

int SeqList[MAXLISTLEN];//

顺序表

可以用C语言中的一维数组表示(定义)顺序表

四、顺序表 sequence list

顺序表的访问

int AcquireSeqList(int i)  //返回指定位置的元素值

{

        return(SeqList[i-1]);      //i从1开始计数

}

访问并输出指定位置(第i个)的数据元素值

int AcquireSeqList(int i)

{

        if(i>ListLen)

                return -1;

        else

                return(SeqList[i-1]);

}

五、顺序表的插入

顺序表的插入是指在顺序表的第i-1个数据元素和第i个数据元素之间插入一个新的数据元素(记为e)

将长度为n的顺序表

(a1,...,ai-1,ai,...,an)

变成长度为n+1的顺序表

(a1,...,ai-1,e,ai,...,an)

顺序表的插入(操作举例)

向后移动的元素个数为:n-i+1

顺序表的删除

在顺序表中,删除第i个元素,需要向前移动的元素个数为

n-i

顺序表的特点

优点:

访问元素时,可以随机存取

时间复杂度是O(1)

而顺序存取:就是存取第N个数据时,必须先访问前(N-1)个数据。

缺点:

插入或删除元素时,需要进行大量的移动操作

时间复杂度是O(n)

时间复杂度

衡量算法的效率,主要依据算法执行所需要的时间,即时间复杂度

事后统计法:计算开始时间和完成时间的差值

实现分析法:撇开算法运行的软硬件环境,分析算法的策略和问题的规模

是评价算法时间复杂度的常用方法

时间复杂度定义为问题规模n的函数f(n),即:

T(n)=O(f(n))

什么是问题规模n?

一般来说,可以理解为算法接受和处理的数据元素个数

Order 忽略低阶项  忽略倍数常量

f(n)由算法的策略决定,一般指算法中最深层循环内的基本操作重复执行的次数

空间复杂度

空间复杂度指算法执行时,所需存储空间的度量。

类似于时间复杂度,它也是问题规模的函数,即S(n)=O(g(n))

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值