数据结构-线性表

本文详细介绍了线性表的概念和特点,包括顺序表示(顺序表)和链式表示(单链表)两种存储结构。顺序表通过数组实现,元素逻辑相邻则物理位置相邻,支持随机访问,但插入和删除操作可能涉及大量元素的移动。而单链表通过节点和指针实现,插入和删除操作相对灵活,但访问需要从头开始遍历。文章还给出了各种操作(如初始化、输入输出、取值、查找、插入、删除)的实现代码及其时间复杂度分析。
摘要由CSDN通过智能技术生成

        在日常生活中,线性表的例子比比皆是。例如,26个英文字母的字母表就是一个线性表,表中的数据元素是单个字母。
        在稍复杂的线性表中,一个数据元素可以包含若干个数据项。例如在一个学生基本信息表中,每个学生为一个数据元素,包括学号、姚名、性别、籍贯、专业等数据项。
        由以上示例可以看出,它们的数据元素虽然不同,但同一线性表中的元素必定具有相同的特性,即属于同一数据对象,相邻数据元素之间存在着序偶关系。

1.线性表的定义和特点

定义:
        由n(n≥0)个数据特性相同的元素构成的有限序列,称为线性表
        线性表中元素的个数n(n≥0)定义为线性表的长度,当n=0时称之为空表。
特点:
        (1) 存在唯一的一个被称作  “第一个”  的数据元素;
        (2) 存在唯一的一个被称作  “最后一个”  的数据元素;
        (3) 除第一个元素之外,结构中的每个数据元素均只有一个前驱;
        (4) 除最后一个元素之外,结构中的每个数据元素均只有一个后继。

2.线性表

        线性表的  “顺序表示”  指的是用一组地址连续的存储单元依次存储线性表的数据元素,这种表示也称作线性表的顺序存储结构或顺序映像,因此称这种存储结构的线性表为顺序表。
        线性表的特点:逻辑上相邻的数据元素,其物理位置也是相邻的。

        设线性表的每个元素需占用n个存储单元,并以所占的第一个单元的存储地址为数据元素的存储位置起始,且第i+1个数据元素的储存位置为LOC(a(i+1)),可得LOC(a(i+1))=LOC(a1)+(i-1)*n。
LOC(a1)是线性表的第一个数据元素a的存储位置,通常称作线性表的起始位置或基地址,表中相邻的元素a1和a2的存储位置LOC(a1)和LOC(a2)是相邻的。
        每一个数据元素的存储位置都和线性表的起始位置相差一个常数,这个常数和数据元素在线性表中的位序成正比。由此,只要确定了存储线性表的起始位置,线性表中任一数据元素都可随机存取,所以线性表的顺序存储结构是一种随机存取的存储结构。

1.存储结构

#define MAXSIZE 100      //顺序表可能达到的最大长度
typedef  struct {
      ElemType  *elem;   //指向数据元素的基地址
      int length;        //线性表的当前长度                                                   
 }SqList;                //顺序表的结构类型SqList

2.初始化

1.为顺序表的初始化操作就是构造一个预定义大小的数组空间,使elem指向这段空间的基地址
2.将表的当前长度设为0

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值