数据结构与算法(3)线性表

数据结构与算法(3)线性表

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

开发工具与关键技术: 数据结构与算法(3)线性表

作者: 梁柏源

撰写时间:2020/5/28

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

在初步了解数据结构与算法后,我们现在详细的分别了他们的基本特点.首先是线性表。

线性表是什么呢?线性表又有什么用?

线性表是最基本、最简单、最常用的一种数据结构。

线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的,但这只适用大部分线性表。在数据结构逻辑层次上细分,线性表可分为一般线性表和受限线性表。

在这里介绍一下,这位客人-数据元素。数据元素:它是数据的基本单位,数据元素也叫做结点或记录。在计算机程序中通常作为一个整体进行考虑和处理。有时,一个数据元素可由若干个数据项组成,即可以将一组数据看成一个数据元素。

一、首先要了解线性表的定义:线性表是数据结构的一种,一个线性表是n个具有相同特性的数据元素的有限序列。数据元素是一个抽象的符号,其具体含义在不同的情况下一般不同。在复杂的线性表中,一个数据元素可由多个数据项组成,此种情况下常把数据元素称为记录,含有大量记录的线性表又称文件。线性表中的个数n定义为线性表的长度,n=0时称为空表。在非空表中每个数据元素都有一个确定的位置,

二、然后就是认识一下他们的特征特征:

1.集合中必存在唯一的一个“第一元素”。

2.集合中必存在唯一的一个 “最后元素” 。

3.除最后一个元素之外,均有 唯一的后继。

4.除第一个元素之外,均有 唯一的前驱。

特征一共就这4个,很好理解。

三、存储结构(顺序&链式):

线性表主要由顺序表示或链式表示。在实际应用中,常以 栈、 队列、 字符串等特殊形式使用。

1、顺序表示指的是用一组地址连续的存储单元依次存储线性表的数据元素,称为线性表的顺序存储结构或顺序映像。它以“物理位置相邻”来表示线性表中数据元素间的逻辑关系,可随机存取表中任一元素。

顺序可以用以下代码实现:

typedef struct Table{

    int * head;//声明了一个名为head的长度不确定的数组,也叫“动态数组”

    int length;//记录当前顺序表的长度

    int size;//记录顺序表分配的存储容量

}table;

2、链式表示指的是用一组任意的存储单元存储线性表中的数据元素,称为线性表的链式存储结构。它的存储单元可以是连续的,也可以是不连续的。

链式可以用以下代码来实现:

typedef struct Link{

    char elem; //代表数据域

    struct Link * next; //代表指针域,指向直接后继元素

}link; //link为节点名,每个节点都是一个 link 结构体

四、结构特点(均匀&有序):

1.均匀性:虽然不同数据表的数据元素可以是各种各样的,但对于同一线性表的各数据元素必定具有相同的数据类型和长度。

2.有序性:各数据元素在线性表中的位置只取决于它们的序号,数据元素之前的相对位置是线性的,即存在唯一的“第一个“和“最后一个”的数据元素,除了第一个和最后一个外,其它元素前面均只有一个数据元素(直接前驱)和后面均只有一个数据元素(直接后继)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值