【数据结构和算法】3.线性表和顺序表的初步介绍

欢迎来sobercq的博客喔,本期系列为【数据结构和算法】第三篇线性表和顺序表

我将从线性结构,线性表的定义等角度出发带大家理解线性结构,以及第四篇会图文讲解顺序表,最后还会有源码分享,感谢观看,支持的可以给个赞哇。

一、线性结构和线性表

 线性结构就是一个有序数据元素的集合,结构中的数据元素之间存在一个对一个的关系

线性结构的特点是:在数据元素的非空有限集中,

(1)存在唯一的一个被称做“第一个”的数据元素;

(2)存在唯一的一个被称做“最后一个”的数据元素;

(3)除第一个之外,集合中的每个数据元素均只有一个前驱;

(4)除最后一个之外,集合中的每个数据元素均只有一个后继;

“前驱”指的是前一个元素,“后继”是后一个元素

其实如果看图就比较好理解 

介绍完线性结构,接下来就讲线性表了,线性表是最常用且最简单的一种数据结构,线性表(linear list)是n个具有相同特性的数据元素的有限序列。数据元素呢在不同的情况下各不相同,它可以是一个数,一个符号也可以是一页书,或者各种字母什么的。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串...

线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的, 线性表在物理上存储时,通常以数组和链式结构的形式存储。

线性表中元素的个数n定为线性表的长度,当n等于0的时候称为空表。线性表是一个相当灵活的数据结构,它的长度可以根据需要增长或者缩短,即对线性表的数据元素不仅可以进行访问,还可进行插入和删除等等。

二、顺序表的定义,种类,代码要实现的功能

(1)顺序表的定义

顺序表是线性表的一种,顺序表如下图所示,

根据图示可以看到当前的数据元素被一段物理地址连续的空间存储,有点类似数组。因为每一个数据元素的存储位置都和线性表的起始位置相差一个和数据元素在线性表中的位序成正比的常数(也就是图示中相差的一)因此线性表中的起始位置确定了,任一一个的数据元素都可以随机存取,所以顺序表是一种随机存取的存储结构,但它只能从头连续存储,此外又因为在C语言中数组也有类似特性,所以通常都用数组来描述顺序表。

以下是定义:

顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。

 (2)顺序表的种类

顺序表一般可以分为:

1. 静态顺序表:使用定长数组存储元素。

2.动态顺序表:使用动态开辟的数组存储。

静态顺序表的弊端也明显点,当我们空间开大了就存在浪费现象,开小了又不够用,而动态顺序表就解决这个问题但动态顺序表仍然存在一定的弊端。

(3)顺序表代码实现的功能

1.我们需要一个结构来存储数据元素,在这里涉及C语言的动态内存管理,开辟内存空间的知识点。其次知道了这个结构,我们还需要知道这个结构的空间大小和有效数据元素

2.接口涉及数据的插入和删除,空间的开辟就需要初始化空间,最后空间的开辟我们还需要销毁空间。

至此我们可以梳理出顺序表需要的东西

好啦,具体的代码我们放到下一篇文章具体讲解,这篇文章介绍到此结束啦,感谢各位,如果感兴趣可以点个赞哇。

下期预告:动态顺序表的实现(图文讲解附赠源码)

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值