线性表的基本操作

参考教材:数据结构C语言版(严蔚敏,吴伟民编著)

InitList(&L) (Initialization List:初始化线性表)

操作结果:构造一个空的线性表L。(分配内存空间)

DestroyList(&L) (删除)

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

操作结果:销毁线性表L。(从内存中删除线性表,释放空间)

ClearList(&L) (重置)

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

操作结果:将L重置为空表。(内存还有,但是没有元素)

ListEmpty(L) (判断线性表是否为空表,空表n=0)

初始条件:线性表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()是数据元素判定函数。

操作结果:返回L中第1个与e满足关系compare()的数据元素的位序。若这样的数据元素不存在,则返回值为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返回它的后继,否则操作失败,next_e无定义。

ListInsert(&L,i,e) (插入元素)

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

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

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

插入元素e之后(长度为n+1):

此处是e的后继

ListDelete(&L,i,&e) (删除元素)

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

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

例:删除前(长度为n):

删除后(长度为n-1):

ListTraverse(L,visit()) (遍历线性表)

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

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

PrintList(L):输出:按照前后顺序输出线性表L的所有元素值。

相关推荐
快去睡觉~2 小时前
力扣73:矩阵置零
算法·leetcode·矩阵
小欣加油3 小时前
leetcode 3 无重复字符的最长子串
c++·算法·leetcode
ReedFoley5 小时前
【笔记】动手学Ollama 第五章 Ollama 在 LangChain 中的使用 - Python 集成
笔记·langchain
月盈缺5 小时前
学习嵌入式的第二十二天——数据结构——双向链表
数据结构·学习·链表
猿究院--王升5 小时前
jvm三色标记
java·jvm·算法
一车小面包6 小时前
逻辑回归 从0到1
算法·机器学习·逻辑回归
科大饭桶7 小时前
C++入门自学Day14-- Stack和Queue的自实现(适配器)
c语言·开发语言·数据结构·c++·容器
tt5555555555557 小时前
字符串与算法题详解:最长回文子串、IP 地址转换、字符串排序、蛇形矩阵与字符串加密
c++·算法·矩阵
★YUI★7 小时前
学习游戏制作记录(制作系统与物品掉落系统)8.16
学习·游戏·ui·unity·c#
努力还债的学术吗喽8 小时前
【速通】深度学习模型调试系统化方法论:从问题定位到性能优化
人工智能·深度学习·学习·调试·模型·方法论