数据结构|线性表的一二三事

简介: 数据结构|线性表的一二三事

算法的高效性

一道编程题的算法设计多种多样,不是唯一而定的,程序顺利运行只是算法几个要求中最基础的要求。而代码是否简洁清晰、通俗易懂也是很重要的因素,“最美代码奖”就是依据这个原理来设定的。在教学中,常常会由“如何评价AB同学的算法高效性”这样的问题来引出线性表。很多同学都会强调所用时间,因为大家都会觉得时间短表明运行快,就说明代码好。但其实不然,如果只考虑时间,那就要考虑到其他条件,硬件差别很大也会导致运行时间的差异。明明A同学的代码更好,但B同学的电脑配置更高,运行速度更快,那这样就会有失公正。有人可能想,把两种算法放到同一台电脑中运行不就可以公正参考了吗?但是我们要考虑的是实际问题,代码量大且繁琐,需要用的时间很多,所以我们要用一个全球统一的标准来评价算法的高效性。那就是评价算法的时间代价和空间代价。

线性表

本章的重点是线性表,而线性表是数据结构中最基本的数据结构之一,也可以来理解计算机对数据的储存和查找的原理。而在线性表的操作中删除元素是基本操作,这需要动态改变表的内容。而删除元素有三种,一是定位删除,删掉某个特定位置的元素。二是删掉0元素。三是删掉不满足条件的元素。而涉及到删除就要考虑到数据位置的表示。

如下图,这是按照顺序放置的线性表。

如下图,这也是按照顺序放置的线性表,但不是从开头开始放置的。

如下图,这是随便放置的线性表。

而随便放置数据后,再想找到相邻的数据就有些困难了,所以我们就可以采用放置地址的方式找到某一个数后面的数据。

比如在1后面应该是2,但这个时候2并不在1后面,所以我们就可以把2的地址找到,也就是14,这样我们就还是可以实现1.2的顺序了。同理,在3后面应该是4,但是真正的4在表里的其他地方,所以也把他的地址找到就是9。

同理,我们可以通过输入地址的这样的方法找到数据的后一个数,也可以找到前一个数。而这里有一个容易混淆的知识点就是,我们输入的前一个数的地址时,不能把它直接放到数的前面。而是要利用数组的顺序,依次放到原本我们就知道的数的后面,而此时有三个数,也是要按照数的顺序来填写地址的顺序。

总结

线性表虽然只是数据结构中比较简单的结构,但是他的重要性也是不言而喻的。在将数据放置进表中的时候,我们也要考虑数据结构与python之间的关系。而这样的表在python中就是list的意思。

上述公式是地址的计算公式,而在实际的计算中,还要添加上时间这个变量哦!掌握好线性表这个知识,使非常重要的,对以后的学习能够打下很坚实的基础!

目录
相关文章
|
2月前
|
存储 算法 测试技术
【C++数据结构——线性表】求集合的并、交和差运算(头歌实践教学平台习题)【合集】
本任务要求编写程序求两个集合的并集、交集和差集。主要内容包括: 1. **单链表表示集合**:使用单链表存储集合元素,确保元素唯一且无序。 2. **求并集**:遍历两个集合,将所有不同元素加入新链表。 3. **求交集**:遍历集合A,检查元素是否在集合B中存在,若存在则加入结果链表。 4. **求差集**:遍历集合A,检查元素是否不在集合B中,若满足条件则加入结果链表。 通过C++代码实现上述操作,并提供测试用例验证结果。测试输入为两个集合的元素,输出为有序集合A、B,以及它们的并集、交集和差集。 示例测试输入: ``` a c e f a b d e h i ``` 预期输出:
62 7
|
2月前
|
机器学习/深度学习 存储 C++
【C++数据结构——线性表】单链表的基本运算(头歌实践教学平台习题)【合集】
本内容介绍了单链表的基本运算任务,涵盖线性表的基本概念、初始化、销毁、判定是否为空表、求长度、输出、求元素值、按元素值查找、插入和删除数据元素等操作。通过C++代码示例详细解释了顺序表和链表的实现方法,并提供了测试说明、通 - **任务描述**:实现单链表的基本运算。 - **相关知识**:包括线性表的概念、初始化、销毁、判断空表、求长度、输出、求元素值、查找、插入和删除等操作。 - **测试说明**:平台会对你编写的代码进行测试,提供测试输入和预期输出。 - **通关代码**:给出了完整的C++代码实现。 - **测试结果**:展示了测试通过后的预期输出结果。 开始你的任务吧,祝你成功!
70 5
|
2月前
|
机器学习/深度学习 存储 C++
【C++数据结构——线性表】顺序表的基本运算(头歌实践教学平台习题)【合集】
本文档介绍了线性表的基本运算任务,涵盖顺序表和链表的初始化、销毁、判定是否为空、求长度、输出、查找元素、插入和删除元素等内容。通过C++代码示例详细展示了每一步骤的具体实现方法,并提供了测试说明和通关代码。 主要内容包括: - **任务描述**:实现顺序表的基本运算。 - **相关知识**:介绍线性表的基本概念及操作,如初始化、销毁、判定是否为空表等。 - **具体操作**:详述顺序表和链表的初始化、求长度、输出、查找、插入和删除元素的方法,并附有代码示例。 - **测试说明**:提供测试输入和预期输出,确保代码正确性。 - **通关代码**:给出完整的C++代码实现,帮助完成任务。 文档
61 5
|
9月前
|
存储 C语言
数据结构中的线性表链式存储介绍及其基本操作
链式存储是线性表的一种重要存储方式,它通过节点和指针的结构,实现了灵活的动态存储管理。本文介绍了单向链表的基本操作,并提供了相应的C语言代码示例。理解和掌握链表的操作对学习和应用数据结构具有重要意义。希望这篇博客能帮助你更好地理解线性表的链式存储。
173 2
|
5月前
|
存储 Java
数据结构第二篇【关于java线性表(顺序表)的基本操作】
数据结构第二篇【关于java线性表(顺序表)的基本操作】
69 6
|
9月前
|
算法
数据结构和算法学习记录——线性表之双向链表(上)-结点类型定义、初始化函数、创建新结点函数、尾插函数、打印函数、尾删函数
数据结构和算法学习记录——线性表之双向链表(上)-结点类型定义、初始化函数、创建新结点函数、尾插函数、打印函数、尾删函数
73 0
|
5月前
|
存储
【数据结构】线性表和顺序表
【数据结构】线性表和顺序表
44 1
|
4月前
|
算法 安全 搜索推荐
2024重生之回溯数据结构与算法系列学习之王道第2.3章节之线性表精题汇总二(5)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
IKU达人之数据结构与算法系列学习×单双链表精题详解、数据结构、C++、排序算法、java 、动态规划 你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
|
5月前
01(数据结构考研)线性表相关操作代码
01(数据结构考研)线性表相关操作代码
110 0
|
5月前
|
存储 C语言
数据结构之线性表的初始化及其操作
数据结构之线性表的初始化及其操作
72 0