线性表的基本操作
注:数据结构的三要素——逻辑结构、数据的运算、存储结构(物理结构)
线性表定义:
具有相同数据类型的n(n>=0)个数据元素的有限序列,其中n为表长,当n=0时线性表是一个空表。若用L命名线性表,则其一般表示为
L
=
(
a
1
,
a
2
,
.
.
.
,
a
i
,
a
j
,
.
.
.
,
a
n
)
L=(a1,a2,...,ai,aj,...,an)
L=(a1,a2,...,ai,aj,...,an)
相同:每个元素所占空间一样大
有限序列:有次序
几个概念:
- ai是线性表中的“第i个”元素线性表中的位序
- a1是表头元素;an是表尾元素。
- 除第一个元素外,每个元素有且仅有一个直接前驱:除最后一个元素外,每个元素有且仅有一个直接后继
线性表的基本操作:
1)从无到有,从有到无
InitList(&L):初始化表。构造一个空的线性表L,分配内存空间。
DestroyList(&L):销毁操作。销毁线性表,并释放线性表L所占用的内存空间。
2)增、删
ListInsert(&L,i,e):插入操作。在表L中的第i个位置插入指定元素e。
ListDelete(&L,i,&e):删除操作。删除表L中第i个位置的元素,用用e返回删除元素的值。
3)改、查(“改”之前也要“查”)
LocateElem(L,e):按值查找。在表L中查找具有给定关键字的元素。
GetElem(L,i):按位查找操作。获取表L中第i个位置的元素的值。
其他常用操作:
Length(L):求表长
printList(L):输出操作
Empty(L):判断操作
Tips:
-
对数据的操作(记忆思路) ——创销、增删查改
-
C语言函数的定义 —— <返回值类型> 函数名 (<参数1类型> 参数1,<参数2类型> 参数2,……)
-
实际开发中,可根据实际需求定义其他的基本操作
-
函数名和参数形式、命名都可以改变(Reference:严蔚敏版《数据结构》)
key:命名要有可读性
-
什么时候要传入引用“$” ——对参数的修改结果需要“带会来”
例:
#include<stdio.h> void test(int x) { x=1024; printf("test函数内部 x=%d\n",x); } int main() { int x = 1; printf("调用test前 x=%d\n",x); test(x); printf("调用test后 x=%d\n",x); }
运行结果:没“带回来”
main函数里面的x和test里面的x不是同一个,可以说test中的x是新开辟的一个和main里面的x除地址不同的复制品
#include<stdio.h> void test(int &x) { x=1024; printf("test函数内部 x=%d\n",x); } int main() { int x = 1; printf("调用test前 x=%d\n",x); test(x); printf("调用test后 x=%d\n",x); }
运行结果:“带回来”了