线性表的定义和基本操作
具有相同数据类型的n(n>=0)个数据元素的有限序列。
n:表长,n=0是空表
L=(a1, a2, ... ,ai, ai+1, ... ,an)
ai是位序,a1表头元素,an表尾元素
除了第一个元素,其他都有直接前驱;除了最后一个元素,其他都有直接后继
基本操作
InitList(&L)
初始化表。构造一个空的线性表,分配内存空间
DestroyList(&L)
销毁操作。销毁线性表,并释放线性表L所占用的内存空间
ListInsert(&L,i,e)
插入操作。在表L中的第i个位置上插入指定元素e
ListDelete(&L,i,&e)
删除操作。删除表L中第i个位置的元素,并用e返回删除元素的值。
LocateElem(L,e)
按值查找操作。在表L中查找具有给定关键字值的元素
GetElem(L,i)
按位查找操作。获取表L中的第i个位置的元素的值
其他常用操作:
Length(L)
求表长,返回线性表L的长度,即L中数据元素的个数
PrintList(L)
输出操作。按前后顺序输出线性表L的所有元素值
Empty(L)
判空操作。若L为空表,则返回true,否则返回false
Tips:
什么时候要传入引用&
?
对参数的修改结果需要“带回来”
void test(int x)
{
x = 1024;
cout << "test函数内部 x=" << x << endl;
}
int main(void)
{
int x = 1;
cout << "调用test前 x=" << x << endl;
test(x);
cout << "调用test后 x=" << x << endl;
}
运行结果如下
调用test前 x=1
test函数内部 x=1024
调用test后 x=1
我们修改以下代码
void test(int &x)
{
x = 1024;
cout << "test函数内部 x=" << x << endl;
}
int main(void)
{
int x = 1;
cout << "调用test前 x=" << x << endl;
test(x);
cout << "调用test后 x=" << x << endl;
}
只是多加了一个&
,运行结果如下
调用test前 x=1
test函数内部 x=1024
调用test后 x=1024
就是说,对参数的修改“带回来”了
这个地方传入的线性表L,加了&
,需要修改线性表L
的具体内容,“带过来”修改加上引用符号。