2021-01-14线性表的定义和一些基本操作

本人大一新生(非计算机专业)上学期跟着学校的安排学习了c语言,可惜院系并不准备让我们继续学习数据结构,因此趁着寒假时间我打算自学一下数据结构,并把一些总结发到我的博客上,出现的一些错误希望各位大佬能够提出。而这篇文章就从最基础的线性表谈起。

系列文章目录


文章目录

  • 系列文章目录
  • 一、线性表的定义
  • 二、线性表的抽象数据类型
  • 总结


一、线性表的定义

(1.)线性表(list)是零个或者是多个元素的有限序列。

首先呢我们要强调的是序列,只有是有序的序列才能够帮助我们用计算机完成更加复杂的任务,其次线性表强调是有限的,就如数组一样它们的元素都是有限的,系统好为它们分配合适的内存单元,对于我们所认知的无限的序列往往只存在数学的概念当中,在计算机中并不存在。

同时数据元素又被称为节点,节点的个数也就是表长了。
(2.)

a1
a2
.....
ai-1
ai
......
an

其中呢ai被称为ai-1的后继元素,当然反过来就是ai-1就是ai的前驱元素了。
而线性表表的个数n定义为线性表的长度,当n等于0的时候,称为空表。
ai表示第i个元素,称i为数据元素ai中线性表中的位序。

注意 :在比较复杂的线性表当中呢,一个数据元素可以由若干个数据项组成。就如班级成绩单一样,每一个人所有的成绩信息就是一个数据元素,你的每一科的成绩就是若干的数据项

二、线性表的抽象数据类型

(1.)线性表的数据对象集合为{a1,a2,…an},每一个元素的类型均为DataType。数据元素之间的关系是一对一的关系。
(2)线性表的八大基本操作

Initiate(*L)//初始化,建立一个全新的空线性表L
ListEmpty(L)// 判断线性表是否为空表如果是返回true(1), 否返回false(0)
ClearList(*L);//将线性表清空
ListLength(L)//求表长
GetElem(L,i,*e)//读表元素,将第i位置上的元素返回给e
LocateElem(L,i)//定位
ListInsert(*L,i,e)//插入
ListDelete(*L,i,*e)//删除第i个元素,并用e返回其值

例子:实现线性表的集合A和B的并集操作
代码如下:

void union (List *La,List Lb)
{
     
 int la_len,lb_len,i;
 ElemType e;//声明另外一个结点;
 la_len = listLength(La);
 lb_len = listLength(Lb);
 for(int i=1;i<lb_len;i++{
     
GetElem (Lb,i,*e);
if(!LocateElem(La,e))
ListInsert(*La,++la_len,e);
}

}

总结


:以上就是今天要讲的内容,简单的介绍类一些线性表的概念和操作。

你可能感兴趣的:(数据结构,数据结构,算法)