#数据结构
来源:互联网 发布:淘宝的追评在哪里看到 编辑:程序博客网 时间:2024/05/29 08:03
2.1.2 线性表的抽象数据类型
线性表是一个数据结构,并且非常灵活,为什么这么说呢?第一、可以根据需要,在线性表的任意位置插入或删除元素。第二、可以获得线性表中任意位置元素的值。第三、可以对所获得的元素的值进行修改。
下面给出对线性表的一些基本和典型操作。
ADT List{
Data:
线性表中的数据元素具有相同类型,相邻元素具有前驱和后继的关系。
Operation:
InitList (&L,maxsize,incresize)
操作结果:构造一个容量为maxsize的空线性表L。
ClearList(&L)
初始条件:线性表L已存在。
操作结果:将L重置为空表。
ListEmpty(L)
初始条件:线性表L已存在。
操作结果:若L为空表,则返回true;否则返回false。
ListLength(L)
初始条件:线性表L已存在。
操作结果:返回L中元素个数,即线性表L的长度。
LocateElem(L,e)
初始条件:线性表L已存在。
操作结果:返回L中第一个与e相等的元素的位序,若这样的元素不存在,则返回值为0.
PriorElem(L,cur_e,&pre_e)
初始条件:线性表L已存在。
操作结果:若cur_e是L的元素,但不是第一个,则用pre_e返回它的前驱;否则操作失败,pre_e无定义。
NextElem(L,cur_e,&next_e)
初始条件:线性表L已存在。
操作结果:若cur_e是L的元素,但不是最后一个,则用next_e返回它的前驱;否则操作失败,pre_e无定义。
ListInsert(&L,i,e)
初始条件:线性表L已存在,i<=i<LengthList(L).
操作结果:在L的第i个元素之前,插入新的元素e,L的长度增加1.
ListDelete(&L,i,&e)
初始条件:线性表L已存在并且非空,i<=i<=LengthList(L).
操作结果:删除L的第i个元素,并用e返回其值,L的长度减1。
GetElem(L,i,&e)
初始条件:线性表L已存在,i<=i<=LengthList(L).
操作结果:用e返回L中第i个元素的值。
ListTraverse(L)
初始条件:线性表L已存在.
操作结果:依次输出L中的每个数据元素.
DestroyList(&L)
初始条件:线性表L已存在.
操作结果:撤销线性表L。
}ADT List
例题2.1
假设线性表La和Lb分别表示集合A和集合B(线性表中的数据元素即为集合中的成员),求一个新的集合A=A并B.
算法思想:
1)从线性表Lb中取一个数据元素;
2)依据该数据的值在线性表La中进行查访;
3)若线性表La中不存在和其值相同的数据元素,则从Lb中删除这个数据元素并插入线性表La中
重复以上操作直至Lb为空表为止。
算法实现:
void union(List &La,List Lb)
{ //将线性表Lb中所有La中没有的数据插入到La中
//算法执行结束后,线性表Lb不再存在
La_len=ListLength(La); //求线性表La的长度
while(!ListEmpty(Lb)) //Lb表中的数据尚未处理完
{ListDelete(Lb,i,e); //删除Lb中的第一个数据元素赋给e
if(!LocateElem(La,e)) //若La中不存在值和e相等的数据元素
ListInsert(La,++La_len,e); //则将它插入在La中最后一个数据元素之后
}
DestroyList(Lb); //撤销线性表Lb
}//union
- 数据结构
- 数据结构
- 数据结构
- 数据结构
- 数据结构
- 数据结构
- 数据结构
- 数据结构
- 数据结构
- 数据结构
- 数据结构
- 数据结构
- 数据结构
- 数据结构
- 数据结构
- 数据结构
- 数据结构
- 数据结构
- 机器学习实战——K-近邻算法(读书笔记)
- Python错误:'ascii' codec can't encode character u'\u7b2c' in position 0:
- logback的使用和详解
- 小白学Rust(一):Rust产生随机数
- 2013年,彻底改变了BAT和中国互联网
- #数据结构
- Hbase和Mysql文件互相导入
- Pollard p-1 算法
- 数组
- JNI局部引用、全局引用和弱全局引用
- KindEditor 无法设置内容解决办法
- 【答疑】非科班出身的前端如何学好Node.js?
- Linux(CentOS7)安装MySQL-5.7
- 汽车通信协议