大话数据结构学习笔记

笔记内容:

第三章线性表
1、 概念
2、 顺序存储结构
3、 链式存储结构
4、 总结


1、概念

零个或者多个数据元素的有序序列叫做线性表。按照存储结构分为顺序存储结构和链式存储结构。

2、顺序存储结构

线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素。
可以类比数组,**有三要素**,**起始位置**,**当前线性表长度**,**线性表的总容量**。
数据结构表示如下:
#define MAX_SIZE 20  //总容量
typedef int ElemType;
typedef struct {ElemType data[MAX_SIZE];//存储线性表的元素以及起始位置int length;//当前长度
}SqList,*pSqList;

常见的操作方法有创建、插入、删除、寻找第i个位置元素、输出元素等等。其中插入和删除需要移动数组中的元素,时间复杂度为O(n),访问元素比较方便,时间复杂度为O(1),常用于长度比较固定不需要经常插入删除的,可以快速访问的场景。

3、链式存储结构

为了解决线性表插入删除耗时问题,由多个节点连接成的,每个节点包含数据信息以及指示其直接后继信息的链表称之为线性表的链式存储结构。数据结构表示如下:
/*线性表的单链表存储结构*/
typedef int ElemType;
typedef struct Node{ElemType data;struct Node *next;
}LinkList,*pLinkList;

链表的插入和删除操作,如果是单次,因为要遍历找到插入的地方,时间复杂度为O(n),但是如果在同一位置处频繁插入多个元素,那么时间复杂度是O(1),但是它不具有随机存储的特性,遍历链表比较耗时,循环链表以及双向链表为了解决遍历的问题,但是引入了指针变量,以空间换时间。

4、 总结

顺序存储结构和链式存储结构各有优缺点,需要根据实际的需求进行选择,需要注意使用时的边界条件。

大话数据结构学习笔记相关推荐

  1. 大话数据结构学习笔记一:第一章

    1.1 基本概念与术语 数据:是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合. 数据元素:是组成数据的.有一定意义的基本单位,在计算机中通常作为整体处理 ...

  2. 大话数据结构学习笔记二:算法

    一 算法定义 算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作. 二 算法的特性: 1 输入输出:算法具有零个或者多个输入,至少有一个或者多个输出. 2 ...

  3. 大话数据结构读书笔记艾提拉总结 查找算法 和排序算法比较好 第1章数据结构绪论 1 第2章算法 17 第3章线性表 41 第4章栈与队列 87 第5章串 123 第6章树 149 第7章图 21

    大话数据结构读书笔记艾提拉总结 查找算法 和排序算法比较好 第1章数据结构绪论 1 第2章算法 17 第3章线性表 41 第4章栈与队列 87 第5章串 123 第6章树 149 第7章图 211 第 ...

  4. 数据结构学习笔记(七):哈希表(Hash Table)

    目录 1 哈希表的含义与结构特点 1.1 哈希(Hash)即无序 1.2 从数组看哈希表的结构特点 2 哈希函数(Hash Function)与哈希冲突(Hash Collision) 2.1 哈希函 ...

  5. 数据结构学习笔记(六):二叉树(Binary Tree)

    目录 1 背景知识:树(Tree) 2 何为二叉树(Binray Tree) 2.1 二叉树的概念与结构 2.2 满二叉树与完全二叉树 2.3 二叉树的三种遍历方式 3 二叉树及其遍历的简单实现(Ja ...

  6. 数据结构学习笔记(五):重识字符串(String)

    目录 1 字符串与数组的关系 1.1 字符串与数组的联系 1.2 字符串与数组的区别 2 实现字符串的链式存储(Java) 3 子串查找的简单实现 1 字符串与数组的关系 1.1 字符串与数组的联系 ...

  7. 数据结构学习笔记(四):重识数组(Array)

    目录 1 数组通过索引访问元素的原理 1.1 内存空间的连续性 1.2 数据类型的同一性 2 数组与链表增删查操作特性的对比 2.1 数组与链表的共性与差异 2.2 数组与链表增删查特性差异的原理 3 ...

  8. 数据结构学习笔记——顺序表的基本操作(超详细最终版+++)建议反复看看ヾ(≧▽≦*)o

    目录 前言 一.顺序表的定义 二.顺序表的初始化 三.顺序表的建立 四.顺序表的输出 五.顺序表的逆序输出 六.顺序表的插入操作 七.顺序表的删除操作 八.顺序表的按位和按值查找 基本操作的完整代码 ...

  9. Python数据结构学习笔记——链表:无序链表和有序链表

    目录 一.链表 二.无序链表 实现步骤分析 三.无序链表的Python实现代码 四.有序链表 实现步骤分析 五.有序链表的Python实现代码 结语 一.链表 链表中每一个元素都由为两部分构成:一是该 ...

  10. Python数据结构学习笔记——队列和双端队列

    目录 一.队列的定义 二.队列 实现步骤分析 三.队列的Python实现代码 四.队列的应用 六人传土豆游戏 五.双端队列的定义 六.双端队列 实现步骤分析 七.双端队列的Python实现代码 八.双 ...

最新文章

  1. 计算机系统安装和维护实验,2计算机系统安装维护实验报告.doc
  2. 我的博客网站开发6——博文关键字搜索
  3. php 数组是否属于迭代器,数组的迭代器属性Iterator介绍
  4. sqllite java 密码,SQLite登录检查用户名和密码
  5. 如何利用Pre.im分发iOS测试包
  6. 企‮增业‬长‮两的‬种方式:内‮式生‬增长、外‮式延‬增长
  7. hive表指定分区字段搜索_hive导出分区表到mysql 分区字段值怎么取
  8. python架构师是做什么的_架构师的工作都干些什么?!想做架构师必看!
  9. 基于Verilog实现2ASK调制
  10. python手机版做小游戏代码大全-20行python代码的入门级小游戏的详解
  11. 【评测】种草群晖918却剁手铁威马F4-421,上手更简单性价比还高
  12. 拍牌系统改版html5,开启上海拍牌的日子,有点玩人的系统,一会快一会慢
  13. 量化交易:金融算法交易的前沿发展
  14. Docker-Harbor:推送镜像/登录失败(Error response from daemon: Get https://reg.harbor.com/v2/: dial tcp 192...)
  15. 对ABAP程序调优的学习(一)select 改 read table
  16. 《区块链技术原理》笔记
  17. 大数据分析助迈凯轮车队角逐F1
  18. 毛巾架用久了生锈怎么办?
  19. 小巧精致的“隐形”耳机,让你排除干扰安心入眠,Wedoking 二代 无线睡眠耳机上手
  20. ThinkPad R400系列恢复光盘

热门文章

  1. 服务器自带软件怎么样卸载,如何安装和卸载远程服务器管理工具
  2. 900款工作岗位竞聘PPT模板免费下载
  3. USB蓝牙适配器修改软件升级 玩转蓝牙配置虚拟BLE基站 修改MAC 和 RAWDATA数据
  4. grubbs准则 matlab_MATLAB-格拉布斯准则(MATLAB-Grubbs-criterion)-M
  5. oracle sqlcode 多条,oracle sqlerrm和sqlcode函数
  6. DB2报错原因汇总(sqlcode sqlstate)
  7. QT 5.9.0下载安装及配置教程
  8. python添加模块方法_Python 添加模块
  9. 【JAVASCRIPT】使用ztree树,实现右键增加,修改,删除节点。带有复选框。
  10. ubuntu前置耳机孔没声音的解决办法