数据结构学习笔记——线性表

第2章  线性表

2.1  线性表的类型定义 

线性结构的特点是:在数据元素的非空有限集中,(1)存在唯一的一个被称做“第一个”的数据元素;(2)存在唯一的一个被称做“最后一个”的数据元素;(3)除第一个之外,集合中的每个数据元素只有一个前驱;(4)除最后一个外,集合中每个数据元素均只有一个后继。

线性表的类型定义

线性表(linear_list)是最常用的且最简单的一种数据结构。一个线性表是n个数据元素的有限序列。在稍复杂的线性表中,一个数据元素可以由若干个数据项(item)组成。在这种情况下,常把数据数据元素成为记录(record),含有大量记录的线性表成为文件(file)

线性表中的数据元素可以是各种各样的,但同一线性表中的元素必定是具有相同特性,即属同一数据对象,相邻元素之间存在着序偶关系。

若将线性表记为

    (a1,···,ai-1,ai,ai+1,···,an)

则表中ai-1领先于ai,ai领先于ai+1,称ai-1是ai的直接前驱元素,ai+1是ai的直接后继元素。当i=1,2,···,n-1是时,ai有且仅有一个直接后继,当i=2,3,···,n时,ai有且仅有一个直接直接前驱。

线性表中元素的个数n(n>=0)定义为线性表的长度,n=0时称为空表。在非空表中的每个数据元素都有一个确定的位置,如a1是第一个数据元素,an是最后一个数据元素,ai是第i个数据元素,称i为数据元素ai在线性表中的位序。

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

线性表的基本操作:

1、InitList(&L)

  操作结果:构造一个空的线性表L。

2、DestroyList(&L)

  初始条件:线性表L已存在

  操作结果:销毁线性表L

3、ClearList(&L)

  初始条件:线性表L已存在

  操作结果:将线性表L重置为空表

4、ListEmpty(&L)

  初始条件:线性表L已存在

  操作结果:判断线性表是否为空表,若线性表L为空表则返回TRUE,否则返回FALSE

5、ListLength(L)

  初始条件:线性表L已存在

  操作结果:返回线性表中数据元素的个数,即求表长

6、GetElem(L,i,&e)

  初始条件:线性表L已存在,1<=i<=ListLength(L)

  操作结果:用e返回线性表L中第i个数据元素的值

7、LocateElem(L,e,compare())

  初始条件:线性表L已存在,compare()是数据元素判定函数

  操作结果:返回星星变L中第1个与e满足关系compare()的数据元素的位序。若这样的数据元素不存在,则返回值为0

8、PriorElem(L,cur_e,&pre_e)

  初始条件:线性表L已存在

  操作结果:若cur_e是线性表L的数据元素,且不是第1个,则用pre_e返回它的前驱,否则造作失败,pre_e无定义

9、NextElem(L,cur_e,&next_e)

  初始条件:线性表L已存在

  操作结果:若cur_e是线性表L的数据元素,且不是最后一个,则用next_e返回它的后继,否则操作失败,next_e无定义

10、ListInsert(&L,i,e)

  初始条件:线性表L已存在,1<=i<=ListLength(L)+1

  操作结果:在线性表L中第i个位置之前插入新的数据元素e,线性表L的长度加1

11、ListDelete(&L,i,&e)

  初始条件:线性表L已存在且非空,1<=i<=ListLength(L)

  操作结果:删除线性表L中的第i个数据元素,并用e返回其值,线性表L的长度减1

12、ListTraverse(L,visit())

  初始条件:线性表L已存在

  操作结果:依次对线性表L的每个数据元素调用函数visit()。一旦visit()失败,则操作失败。

时间: 2024-12-26 20:15:08

数据结构学习笔记——线性表的相关文章

数据结构学习笔记——线性表的应用

数据结构学习笔记——线性表的应用 线性表的应用 线性表的自然连接 计算任意两个表的简单自然连接过程讨论线性表的应用.假设有两个表A和B,分别是m1行.n1列和m2行.n2列,它们简单自然连接结果C=A*B(i==j),其中i表示表A中列号,j表示表B中的列号,C为A和B的笛卡儿积中满足指定连接条件的所有记录组,该连接条件为表A的第i列与表B的第j列相等. 如:         1 2 3                3 5 A  =  2 3 3         B =  1 6       

数据结构学习笔记-----------------线性表

线性结构的特点:在数据的非空有限集中 一.存在唯一一个被称为"第一个"的数据元素 二.存在唯一一个被称为"最后一个"的数据元素 三.除第一个之外,集合中每个数据元素均只有一个前驱 四.除最后一个之外,集合中每个数据元素均只有一个后继 一个线性表是n个数据元素的有限序列 序偶关系:两个固定次序的客体组成一个序偶,它常表达连个客体之间的关系. 非递减有序排列:从小到大,允许中间有相等的情况

数据结构(C++)学习笔记——线性表

(1)顺序表: 题目1: 已知长度为n的顺序表, 写一时间复杂度为O(n), 空间复杂度为O(1)的算法,实现删除顺序表中所有值为item的数据元素的操作 类和类函数的声明文件(SqList.h): 类函数的实现文件(SqList.cpp):

小猪的数据结构学习笔记(四)

小猪的数据结构学习笔记(四) 线性表之静态链表 --转载请注明出处:coder-pig 本章引言: 在二,三中中我们分别学习了顺序表中的线性表与单链表,线性表有点类似于 我们前面所学的数组,而单链表使用的最多的是指针,这里问个简单的问题, 如果是在以前没有指针的话,前辈先人们怎么实现单链表呢?大家思考下! 没有指针,那么用什么来代替呢?前辈先人们非常机智,想出了使用下标+游标的方式 来实现单链表的效果!也就是今天要讲的--静态链表! 当然你也可以直接跳过本章,因为有了单链表就没有必要用静态链表了

小猪的数据结构学习笔记(二)

小猪的数据结构学习笔记(二) 线性表中的顺序表 本节引言: 在上个章节中,我们对数据结构与算法的相关概念进行了了解,知道数据结构的 逻辑结构与物理结构的区别,算法的特性以及设计要求;还学了如何去衡量一个算法 的好坏,以及时间复杂度的计算!在本节中我们将接触第一个数据结构--线性表; 而线性表有两种表现形式,分别是顺序表和链表;学好这一章很重要,是学习后面的基石; 这一节我们会重点学习下顺序表,在这里给大家一个忠告,学编程切忌眼高手低,看懂不代表自己 写得出来,给出的实现代码,自己要理解思路,自己

小猪的数据结构学习笔记(五)

小猪的数据结构学习笔记(五) 线性表之--循环链表                           --转载请注明出处:coder-pig 循环链表知识点归纳: 相关代码实现: ①判断是否为空表: ②单循环链表的存储结构 其实和单链表的结构是一样的! /*定义循环链表的存储结构*/ typedef struct Cir_List { int data; struct Cir_List *next; }Lnode; ③初始化循环单链表 代码如下: //1.循环链表的初始化 //表示一个元素,如

数据结构学习笔记之栈

栈(stack)  是限定仅在表尾进行插入或删除操作的线性表.因此,对栈来说,表尾端有其特殊含义,称为栈项(top),相应地,表头端称为栈底(bottom).不含元素的空表称为空栈. 栈有两种存储表示方法:顺序栈和链栈.顺序栈,即栈的顺序存储结构是利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,同时附设指针top指示栈顶元素在顺序栈中的位置.通常的习惯做法是以top=0表示空栈,鉴于C语言中数组的下标约定从0开始,则当以C作描述语言时,如此设定会带来很大不便:另一方面,由于栈在使用过程

数据结构学习笔记(1)-数据结构与算法

基本概念和术语 1.数据  数据元素  数据对象   数据结构 数据:在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称. 数据元素:是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理. 数据对象:是性质相同的数据元素的集合.是数据的一个子集. 数据结构:是相互之间存在一种或多种特定关系的数据元素的集合. 2.数据结构 数据结构分为逻辑结构和物理结构 2.1逻辑结构 逻辑结构表示数据之间的相互关系.通常有四种基本结构: 集合:结构中的数据元素除了同属于一种类型外,别

小猪的数据结构学习笔记(三)

小猪的数据结构学习笔记(三) 线性表之单链表 本章引言: 上一节中我们见识了第一个数据结构--线性表中的顺序表; 当你把操作的代码自己写几遍就会有点感觉了,如果现在让你写顺序表的 插入算法,你能够想出大概的代码么?如果可以,那么你就可以进入新的章节了; 否则,还是回头看看吧!在本节,我们将迎来线性表的链式表示--单链表 单链表和顺序表有什么优势和劣势呢?单链表的头插法和尾插法有什么不同呢? 请大家跟随笔者的脚步来解析线性表中的单链表把! 本节学习路线图 路线图解析: ①先要理解顺序表和单链表各自