此博客为个人的学习记录,如有问题欢迎讨论
线性表
线性表是最基本、最简单、也是最常用的一种数据结构。线性表(linear list)是数据结构的一种,一个线性表是n个具有相同特性的数据元素的有限序列。
线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的(注意,这句话只适用大部分线性表,而不是全部。比如,循环链表逻辑层次上也是一种线性表(存储层次上属于链式存储,但是把最后一个数据元素的尾指针指向了首位结点)。
线性表的特征
1.集合中必存在唯一的一个“第一元素”。
2.集合中必存在唯一的一个 “最后元素” 。
3.除最后一个元素之外,均有唯一的后继(后件)。
4.除第一个元素之外,均有唯一的前驱(前件)。
优点
线性表的逻辑结构简单,便于实现和操作。因此,线性表这种数据结构在实际应用中是广泛采用的一种数据结构。
函数接口定义
三个基本函数实现
locateElement
int locateElement(SequentialListPtr paraListPtr, int paraValue)
{
for (int i = 0; i < paraListPtr->actualLength; i++)
if (paraListPtr->data[i] == paraValue)
return i;
}
getElement
int getElement(SequentialListPtr paraListPtr, int paraPosition) {
if (paraPosition < 0) {
printf("错误位置: %d.\r\n", paraPosition);
return -1;
}//检查位置
if (paraPosition >= paraListPtr->actualLength) {
printf("无法插入目标位置,因为该位置: %d 超出了线性表的位置 %d.\r\n", paraPosition, paraListPtr->actualLength);
return -1;
}
return paraListPtr->data[paraPosition];
}
clearlist
void clearList(SequentialListPtr paraListPtr) {
paraListPtr->actualLength = 0;
}//删除数据释放内存
运行结果
初始化的线性表为: 3 5 2 7 4
在首位插入后: 8 3 5 2 7 4
在尾部插入后: 8 3 5 2 7 4 9
在尾部之外插入
不能插入:位置 8 大于线性表长度 7.
线性表为:8 3 5 2 7 4 9
插入 10.
10 8 3 5 2 7 4 9
插入 11.
11 10 8 3 5 2 7 4 9
插入 12.
12 11 10 8 3 5 2 7 4 9
插入 13.
空间不够,不能插入数据
学习总结
1.线性表的定义
线性表:具有相同特性的数据结构的元素组成的有限序列;
线性表长度:序列中的元素个数,用(n >= 0)表示,n可以为0,表示为空表;
2.线性表的逻辑特性
线性表只有一个表头元素和表尾元素,表头元素没有前驱,表尾元素没有后继,其余元素都只有一个直接前驱和一个直接后继。
3.线性表的存储结构
线性表的存储结构有顺序存储和链式存储两种,即顺序表和链表。