顺序表

believepd believepd     2022-11-30     779

关键词:

一、数据是如何在内存中存储的?

32位系统中char,int型数据在内存中的存储方式:

  • char占1byte(8bit)
  • int占4byte(32bit)

假设我们有一个int类型的值,它从0x01开始,一个int占据4个字节,则其结束于0x04。

技术图片

二、数据类型有什么意义?

它确定了一个特定类型的数据到底要申请多大的内存地址来存储数据,并且决定取到的二进制数应该如何解释。

三、同类型的数据在内存中是如何连续存储的?

假设有一个四个数的集合 1、20、300、4000,将它们连续地存储在一起时,在内存里的表现就像是它们紧挨着挤在一起。如果第一个元素从0x01开始,那整个集合就在0x16结束。代表集合的变量指向集合的开始地址0x01,因为一个int类型数据占据4个字节,所以第一个元素就是存储在0x01-0x04的内存地址中,以此类推,就可以得到其他元素。

技术图片

这种叫做:顺序表的基本布局

四、不同类型的数据集合在内存中是如何存储的?

当不同的元素要存储一个集合里时,用偏移量定位获取每个元素就靠不住了,因为不用数据类型在内存中占用的空间(字节)是不同的。

假设集合里有10、"a"、20、"b" 这四个元素,这时就不能采用上面那种连续存储布局;而是,它们分散存储在不同的地方。这时,就可以申请一块4个元素大小的连续内存区域,里面存的就是对应的元素的内存地址。

技术图片

这种叫做:元素外置的顺序表

五、顺序表在内存中的结构

要在内存中给集合开辟一块区域,先要确定集合大小(容量)。另外,确定区域后,还要知道当前已经占用了几个元素,一旦溢出,就需要重新申请更大的空间。

要表达这种结构,有两种实现方式:

技术图片

图a是一体式结构:存储表信息与元素存储区信息安排在一块存储区里
图b是分离式结构:表对象里只保存于整个表有关的信息(容量和元素个数),实际数据元素存放在另一个独立的元素存储区里,通过指针链接

二者区别:
如果增加元素超过了列表的最大存储量时,则需要新建一个数据区.。
一体式结构若想更换数据区,则要整体更改;而分离式结构则只需要更改表信息区中的数据区链接地址即可,即该顺序表对象不变。

六、顺序表扩充

线性扩充:每次扩充增加固定数目的存储位置,节省空间,操作次数多(以时间换空间)。

倍数扩充:浪费空间(以空间换时间),操作次数少,推荐。

 

数据结构之顺序表(代码片段)

目录顺序表概念顺序表实现静态顺序表的结构定义动态顺序表的结构定义顺序表初始化顺序表打印检查空间进行扩容顺序表尾插顺序表尾删顺序表头插顺序表头删顺序表查找在任意位置插入在任意位置删除顺序表销毁头文件源文... 查看详情

线性表之顺序存储结构(顺序表)(代码片段)

目录1.线性表2.顺序存储结构(顺序表)2.1顺序表一般可以分为: 1.静态顺序表:使用定长数组存储元素 1.1静态顺序表:顺序表的大小是确定的,容量是固定的.    结论:静态顺序表不是很常量,了解就行.2.动态顺序表:... 查看详情

数据结构之顺序表(代码片段)

文章目录线性表顺序表的概念及结构顺序表的功能实现定义顺序表顺序表初始化顺序表打印顺序表尾插顺序表尾删顺序表头插顺序表头删查找指定元素在指定位置插入删除指定位置销毁顺序表总结SeqList.hSeqList.c线性表线性表(linea... 查看详情

顺序表基本操作(代码片段)

顺序表一、顺序表是什么?二、顺序表分类1.静态顺序表:2.动态顺序表:三、接口实现头文件设置顺序表大小设置顺序表最大容量顺序表初始化顺序表销毁顺序表打印顺序表尾插顺序表尾删顺序表头插顺序表头删判... 查看详情

数据结构顺序表(代码片段)

前言:本章介绍的主要内容是顺序表文章目录1.线性表2.顺序表2.1概念及结构2.2顺序表分类3.动态顺序表项目创建3.1定义顺序表思考下为何使用typedef?3.2顺序表的初始化思考这样进行初始化可行否?修改后的正确初始... 查看详情

数据结构之顺序表(代码片段)

文章目录前言顺序表项目详细分配.定义顺序表顺序表之初始化方法实现顺序表之打印方法顺序表之尾插方法实现顺序表之检查容量方法实现顺序表之头插方法实现顺序表之尾删方法实现顺序表之头删方法实现顺序表之查找元素... 查看详情

顺序表与链表

顺序表与链表顺序表?顺序表是在计算机内存中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构。?线性表采用顺序存储的方式存储就称之为顺序表。顺序表是将表中的结点依次存放在计... 查看详情

顺序表的实现以及力扣练习题(代码片段)

目录线性表顺序表顺序表的实现顺序表的初始化顺序表的销毁顺序表的打印顺序表检查是否要扩容顺序表的尾插顺序表的头插顺序表的尾删顺序表的头删顺序表的查找顺序表在pos位置插入x顺序表删除pos位置的值顺序表修改pos位... 查看详情

1.2顺序表

...方法就是用一组连续地址的内存单元来存储整张线性表。顺序表的特征:  1)有一个唯一的表名来标识该顺序表;  2)内存单元连续存储,也就是说,一张顺序表要占据一块连续的内存空间;  3)数据顺序存放,元素之... 查看详情

顺序表(代码片段)

顺序表1、什么是顺序表顺序表是将表中的数据依次存放在计算机内存中一组地址连续的存储单元中的一种数据结构,可以将顺序表看成一个可以动态改变大小的数组。数据元素物理存储的相邻关系来反映数据元素之间逻辑上的... 查看详情

数据结构c语言版——顺序表增删改查实现(代码片段)

文章目录顺序表1.线性表2.顺序表3.顺序表基本概念4.顺序表实现顺序表初始化顺序表的扩容顺序表的插入顺序表的删除顺序表的查找顺序表的修改顺序表的销毁5.顺序表总结顺序表1.线性表线性表:线性表是由n个具有相同特性... 查看详情

数据结构学习笔记--顺序表(代码片段)

1.顺序表概念顺序表是用以一段物理地址连续的存储单眼依次存储数据元素的线性结构,一般情况采用数组存储。在数组上完成数据的增删查改。顺序表一般分为静态顺序表和动态顺序表,这里主要讲如何实现动态顺序表... 查看详情

数据结构——java实现顺序表

一、分析  什么是顺序表?顺序表是指用一组地址连续的存储单元依次存储各个元素,使得在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中的线性表。一个标准的顺序表需要实现以下基本操作:  1、初始化顺序... 查看详情

数据结构线性表之顺序表arraylist(代码片段)

一、什么是顺序表  在了解顺序表之前,需要先了解什么是顺序表?顺序表是线性表的一种,线性表分为顺序表和链表。其中顺序表在java中又分为数组(最简单的顺序表)和ArrayList。为什么我们称其为顺序表呢?原因顾名思... 查看详情

顺序表

...类数据元素构成的有序序列的线性结构实现方式分两种:顺序存储实现(ArrayList)和链式存储实现(LinkList)顺序表0、结构初始化顺序表结构如图:structListNodeElementTypeData[MaxSize];//定义一个大小为MaxSize的数组intLast;//最后一个元素... 查看详情

08顺序表定义

顺序表的定义一、顺序表的静态存储分配#definemaxSize100 //显式地定义表的长度typedefintDataType; //定义表元素的数据类型typedefstruct //顺序表的定义{ DataTypedata[maxSize]; //静态分配存储表元素的向量 intn; //实... 查看详情

c语言实现顺序表(初阶数据结构)(代码片段)

文章目录前言顺序表的介绍项目分配顺序表的定义顺序表的初始化顺序表的打印顺序表的销毁顺序表的尾插增容函数的实现顺序表的头插顺序表的任意位置插入数据顺序表的尾删顺序表的头删顺序表的任意位置删除顺序表的查找... 查看详情

顺序表分析(代码片段)

文章目录一、顺序表的概念二、顺序表的增删查改1、顺序表结构体2、顺序表初始化3、顺序表数据增加4、顺序表删除5、顺序表查找6、顺序表修改7、顺序表打印三、源码四、小结一、顺序表的概念顺序表是一段物理地址连续的... 查看详情