数据结构-第二章(2)-线性表的顺序表示和实现

数据结构


数据结构-第一章
抽象数据类型案例
数据结构-第二章(1)-线性结构

一、前言

在计算机中线性表有两种存储结构分别是顺序存储结构和链式存储结构。

这篇文章介绍的是线性表的顺序存储结构


二、线性表的存储结构

  • 线性表的顺序表示又称为顺序存储结构或顺序映像。

  • 顺序存储定义:把逻辑上相邻的数据元素存储在物理上相邻的存储单元中的存储结构。

    线性表的顺序存储结构是指用一段地址连续的存储单元依次存储线性表的数据元素。
    在这里插入图片描述

例如:线性表(1,2,3,4,5,6)
在这里插入图片描述
从上图我们可以得知一个典型的线性表顺序存储结构需要占用一片连续的存储空间

顺序表中元素存储位置的计算
在这里插入图片描述
在这里插入图片描述
计算地址只算一次与处理数据的规模无关数量级是O(1)这种运算叫随机存取。

由于顺序表中的元素要求地址连续、依次存放、随机存取、类型相同,高级程序设计语言当中可以用一维数组来实现。
在这里插入图片描述
线性表经常进行插入和删除的操作长度可变而C中数组的长度是不可变的。
所以我们可以用一个额外的变量表示线性表的长度。

在这里插入图片描述
上述:ElemType是根据实际问题,你需要什么类型的数组就定义成什么,一般是根据问题定义一个结构体或者是 typedef char ElemType

  • 一维数组的定义方式
    在这里插入图片描述

  • 多项式的顺序存储结构类型定义
    在这里插入图片描述
    NOTE: 线性表的逻辑位序和物理位序相差1:因为其存储结构的下标从0开始。
    在这里插入图片描述

三、补充:类C语言相关操作

3.1 数组定义

在这里插入图片描述
数组名其实就是首元素的地址所以也可以直接定义一个指针。数组的大小用相应的函数来动态分配内存。

3.2 C语言中

在这里插入图片描述

其中:
1、malloc()函数是在程序运行时分配内存的重要工具接受一个参数:所需的内存字节数但并不会为其赋名.然而,但他确实返回了动态分配内存块的首地址.因此可以把该地址赋给一个指针变量,并使用指针访问这块内存注意要强制类型转换。

  • 如:(类型说明符 * )malloc(size);
    如向内存要100个int(类型说明符 * )malloc(100 * sizeof(int));

2、sizeof(x)计算变量/数据类型x所占据的字节数

3.free§释放指针p所指变量的存储空间,即彻底删除一个变量

3.3 C++中

在这里插入图片描述
在这里插入图片描述

总结

期待大家和我交流,留言或者私信,一起学习,一起进步!

猜你喜欢

转载自blog.csdn.net/CltCj/article/details/121374863