数据结构篇其一---顺序表

前言

数据结构篇---C语言实现数据结构

C语言的基础知识:数组 函数 结构体 指针 动态内存分配

顺序表

从数据结构的角度看待数组

int arr[10];

数组是一个基本的数据结构吗?

这里以一维数组为例。

从数据来看:这个数组存储10个整型数据。

从结构上:数据在内存中连续存储,地址随下标增加而增大。

所以数组也是一个数据结构。

顺序表的概念

顺序:按照一定的顺序,连续。

表:集合,相同事物的集合体。

连续,相同事物?这也符合数组的概念。那么顺序表和数组有什么关系呢?

顺序表底层就是数组,你认为顺序表就是数组也没问题。

已经有数组了为什么单独引入顺序表这个数据结构?

学了数组你能实现以下简单的操作

1.修改数组元素的数据。

2.排序。调用qsort函数,或者独立实现一种排序算法

3.数组传参。

4.用数组下标或者指针访问某个元素。

那么以下的操作你可曾实现过?

1.在数组的某个位置插入某个数据。

2.删除数组某个位置的数据。

3.查找数组中的某个数据。

很遗憾,数组并没有很简单的功能实现这些操作,初学时我们要自己用循环实现。

但我们如今开始学习数据结构了,顺序表就实现了这些算法。

顺序表提供了很多现成的的方法,数组要操作可能需要操作者自己实现的代码,顺序表已经实现了代码,可以立即使用。

结论:顺序表是数组的plus版。

线性表

下面挖掘一下广度。顺序表也只是一棵树的枝叶,我们要对他进行溯源,就是下面的线性表。

我们拆分一下这个词,线性表。

线性:即直线。具有直线的性质,直线是逻辑上的直线,不是物理上的直线。线性表的数据,一定对外表现出一条直线,(我们观察到的)。物理上指内存上的存储,即数据在内存存储是否为一条直线(连续存储)不关心。

表:集合。

线性表是一个(逻辑)线性结构的集合。

顺序表在逻辑上是线性的,所以顺序表是一种线性表。

顺序表在内存空间也是连续的,但线性表不要求空间连续。

那么是线性表但空间上不连续,又是什么数据结构呢?这里留个悬念。

总结:

线性表 逻辑上:线性(连续);物理结构(可连续可不连续)。

顺序表 逻辑上:线性;物理结构 连续。

顺序表的分类

顺序表分为静态顺序表和动态顺序表。

1.静态顺序表

前面说过顺序表的概念了。

限定条件:静态,意味着固定了,不变。

数组在创建时元素个数确定了,这个数组就固定了,称为定长数组。

虽然数组总的元素大小固定,但这数组每个元素不一定全部存入有效的数据,引入size记录有效数据的个数。

因此这里给出静态顺序表的定义:

#define MAX 100  //宏定义明示常量
typedef int SLDataType;//方便替换类型,比如你要存放double类型,只需把int更改为double
typedef struct seqlist {
	SLDataType arr[MAX];//定长数组
	int size;//记录当前的有效数据
}SL;

2.动态顺序表

限定条件:

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值