本人大一新生(非计算机专业)上学期跟着学校的安排学习了c语言,可惜院系并不准备让我们继续学习数据结构,因此趁着寒假时间我打算自学一下数据结构,并把一些总结发到我的博客上,出现的一些错误希望各位大佬能够提出。而这篇文章就从最基础的线性表谈起。
系列文章目录
一、线性表的定义
(1.)线性表(list)是零个或者是多个元素的有限序列。
首先呢我们要强调的是序列,只有是有序的序列才能够帮助我们用计算机完成更加复杂的任务,其次线性表强调是有限的,就如数组一样它们的元素都是有限的,系统好为它们分配合适的内存单元,对于我们所认知的无限的序列往往只存在数学的概念当中,在计算机中并不存在。
同时数据元素又被称为节点,节点的个数也就是表长了。
(2.)
其中呢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);
}
}
总结
:
:以上就是今天要讲的内容,简单的介绍类一些线性表的概念和操作。