1.顺序表

1.1 顺序表结构

一个顺序表的完整信息包括两部分,一部分是表中的元素集合,另一部分是为实现正确操作而需记录的信息,即有关表的整体情况的信息,这部分信息主要包括元素存储区的容量和当前表中已有的元素个数两项。

1.2 顺序表的两种基本实现方式

一体式结构和分离式结构。

1.3 元素存储区替换

一体式结构由于顺序表信息区与数据区连续存储在一起,所以若想更换数据区,则只能整体搬迁,即整个顺序表对象(指存储顺序表的结构信息的区域)改变了。

分离式结构若想更换数据区,只需将表信息区中的数据区链接地址更新即可,而该顺序表对象不变。

1.4 元素存储区扩充

采用分离式结构的顺序表,若将数据区更换为存储空间更大的区域,则可以在不改变表对象的前提下对其数据存储区进行了扩充,所有使用这个表的地方都不必修改。只要程序的运行环境(计算机系统)还有空闲存储,这种表结构就不会因为满了而导致操作无法进行。人们把采用这种技术实现的顺序表称为动态顺序表,因为其容量可以在使用中动态变化。

扩充的两种策略

  • 每次扩充增加固定数目的存储位置,如每次扩充增加10个元素位置,这种策略可称为线性增长。

    特点:节省空间,但是扩充操作频繁,操作次数多。

  • 每次扩充容量加倍,如每次扩充增加一倍存储空间。

    特点:减少了扩充操作的执行次数,但可能会浪费空间资源。以空间换时间,推荐的方式。

1.5 Python中的顺序表

Python中的list和tuple两种类型采用了顺序表的实现技术,具有前面讨论的顺序表的所有性质。

tuple是不可变类型,即不变的顺序表,因此不支持改变其内部状态的任何操作,而其他方面,则与list的性质类似。

数据结构和算法 D2相关推荐

  1. JS之数据结构与算法

    前言 数据结构是计算机存储.组织数据的方式,算法是系统描述解决问题的策略.了解基本的数据结构和算法可以提高代码的性能和质量. 也是程序猿进阶的一个重要技能. 手撸代码实现栈,队列,链表,字典,二叉树, ...

  2. Go语言-数据结构与算法

    go语言之专业数据结构与算法 3.golang实现数组结构 code\ArrayList\ArrayList.go package ArrayListimport ("errors" ...

  3. 第六章.数据结构与算法基础

    目录 第六章.数据结构与算法基础(重点) 第一节.数组与矩阵 数组 稀疏矩阵 第二节.数据结构的定义 第三节.线性表 链表详解 顺序存储与链式存储对比 队列与栈 第四节.广义表 第五节.树与二叉树 树 ...

  4. 数据结构与算法python版

    数据结构与算法 1 递归 1.1 递归条件 1.2 汉诺塔 2 查找 2.1 顺序查找 2.2 二分查找 3 列表排序 3.1 冒泡排序 3.2 选择排序 3.3 插入排序 3.4 快速排序 3.5 ...

  5. 数据结构与算法入门(Java)

    数据结构与算法(Java) 1. 数据结构与算法概述 1.1 什么是数据结构? 官方解释: 数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及他们之间的关系和操作等相关问题的学科. 大白话: ...

  6. java数据结构与算法003

    数据结构与算法     查找和排序算法是算法的入门知识,其经典思想可以用于很多算法当中.因为其实现代码较短,应用较常见.所以在面试中经常会问到排序算法及其相关的问题.但万变不离其宗,只要熟悉了思想,灵 ...

  7. 1.数据结构与算法 基础知识

    文章目录 数据结构与算法 (Python 版) 知识点一 : 算法 概念 知识点二 : 时间复杂度 知识点三 : 空间复杂度 知识点四 : 递归 知识点五 : 递归 汉诺塔问题 1.题目 2.思路 3 ...

  8. 数据结构与算法——列表排序(一篇文章带你了解排序算法)

    数据结构与算法基础 列表排序: 什么是列表排序? 排序:将一组"无序"的记录序列调整为"有序"的记录序列. 列表排序:将无序列表变为有序列表. 内置函数:sor ...

  9. 软考《软件设计师》第九章:数据结构与算法

    第九章:数据结构与算法 考点1:矩阵 数组 矩阵:计算时采用带点排除法,注意一维数组的起始位置 考点2:表 线性表 顺序表:顺序存储,即用一组地址连续的存储单元依次存储线性表中的数据元素 链表:链式存 ...

最新文章

  1. AndroidStudio脚本命令指定AAR生成目录与版本号
  2. Ubuntu查看端口占用情况
  3. Python----Requests库基本使用
  4. 小蚂蚁学习C语言(35)——两行三列二维数组变三行两列二维数组
  5. java面试题二十七 多线程考题2
  6. python关于二手房的课程论文_python之数据清理-以二手房信息为例
  7. php-fpm nginx 关系,nginx 和php-fpm关系
  8. CSDN账号注销的问题:手机号注册的CSDN号是可以注销的
  9. win11系统中文名改英文名(win11、win10修改用户名)超详细图文
  10. 解放生产力,VSCode使用小技巧
  11. 利用powershell安装360杀毒
  12. Ansible批量管理Windows服务器,winrm配置
  13. 微信在Ios上h5不能分享
  14. PYTHON通过psutil模块实时监测cpu、内存、网速运行情况
  15. 陌生QQ号聊天,QQ咨询对话框,QQ临时对话框链接代码
  16. CentOS切换中文拼音安装包时:zw 不在 sudoers 文件中。此事将被报告。【记录】
  17. Android消息推送之Androidpn_Demo版到正式上线
  18. 未能找到你安装了radmin服务器,Radmin
  19. STM32F103移植LiteOS保姆级教程(基于Ubuntu平台)
  20. 手机号码和电话号码的正则表达式

热门文章

  1. android content provider线程安全,Android ContentProvider的线程安全(二)
  2. 步进电机可以连续运转吗?
  3. 【一套代码小程序NativeWeb阶段总结篇】可以这样阅读Vue源码
  4. Google+ 团队的 Android UI 测试
  5. springboot-29-security(二)用户角色权限控制
  6. 有线电信服务全球市场:未来三年复合年增长率将放缓
  7. lucene(全文搜索)_建立索引_根据关键字全文搜索_源码下载
  8. 网管系统开发经验谈(二)
  9. 剑指offer(C++)-JZ34:二叉树中和为某一值的路径(二)(数据结构-树)
  10. alpine linux安装桌面,Alpine linux硬盘安装