青岛大学_王卓老师【数据结构与算法】Week02_03_线性表的类型定义_学习笔记

本文是个人笔记,仅用于学习分享,素材来自青岛大学王卓老师的教学视频,如有侵权,请留言作删文处理。

王卓老师 数据结构与算法第 02 周第 03 个原视频链接

📚 Week02_03_线性表的类型定义

线性表的抽象数据类型的定义如下:

ADT List
{
    数据对象:D = {ai| ai属于Elemset, (i=1, 2, ..., n, n≥0)}
    数据关系:R = {<ai-1,ai>| ai-1,ai属于D,(i=1, 2, ..., n)}
    基本操作:
        InitList(&L);
    	DestroyList(&L);
    	ListInsert(&L, i, e);
    	ListDelete(&L, i, &e);
    	...
}ADT List
基本操作一
InitList(&L);
// Initialization List

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

DestroyList(&L);

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

操作结果:销毁线性表 L

ClearList(&L);

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

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

基本操作二
ListEmpty(L);

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

操作结果:若线性表 L 是空表,则返回 True;若线性表不是空表,则返回 False

ListLength(L);

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

操作结果:返回线性表 L 中的数据元素个数

基本操作三
GetElem(L, i, &e);

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

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

LocateElem(L, e, compare());

初始条件:线性表 L 已经存在,compare() 是数据元素判定函数(等于,大于或小于元素 e)

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

基本操作四
PriorElem(L, cur_e, &pre_e);

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

操作结果:若 cur_e 是 L 的数据元素,且不是第一个数据元素,则用 pre_e 返回它的前驱;若cur_e 没有前驱元素,则操作失败,pre_e 无意义。

NextElem(L, cur_e, &next_e);

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

操作结果:若 cur_e 是 L 的数据元素,且不是最后一个数据元素,则用 next_e 返回它的后继;若cur_e 没有后继元素,则操作失败,next_e 无意义。

基本操作五
ListInsert(&L, i, e);

初始条件:线性表 L 已经存在,1 ≤ i ≤ ListLength(L) + 1(合法插入位置的范围)

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

插入元素 e 之前(长度为 n)

在这里插入图片描述

插入元素 e 之后(长度为 n + 1)
在这里插入图片描述

基本操作六
ListDelete(&L, i, &e);

初始条件:线性表 L 已经存在,1 ≤ i ≤ ListLength(L)(合法删除位置的范围)

操作结果:删除 L 的第 i 个,并用 e 返回其值,L 的长度 - 1

删除之前(长度为 n)

在这里插入图片描述

删除后(长度为 n - 1)

在这里插入图片描述

ListTraverse(&L, visited());

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

操作结果:依次对线性表中每个元素调用 visited()

以上所提及的运算是逻辑结构上定义的运算。只要给出这些运算的功能是 " 做什么 ",至于 " 如何做 " 等实现细节,只有待确定了存储结构之后才考虑。

学习笔记最后有微信公众号:惟CPP,欢迎关注,一起交流学习进步~

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值