一、绪论
- 数据(data)—所有能输入到计算机中去的描述客观事物的符号
数据元素(data element)是数据的基本单位。
数据项(data item)是数据元素最小单位。
数据 > 数据元素 > 数据项 - 逻辑结构分为线性结构和非线性结构(集合结构、树结构、图结构或网状结构)
存储结构(物理结构)分为顺序存储、链式存储。依赖于计算机。
顺序存储结构:
(顺序映像)——借助元素在存储器中的相对位置来表示数据元素间的逻辑关系。
链式存储结构:
(链式映像)——借助指示元素存储地址的指针表示数据元素间的逻辑关系。
- 算法的定义及特性:
算法是为了解决某类问题而规定的一个有限长的操作序列。
算法的特性:
有穷性。 一个算法必须总是在执行有穷步后结束,且每一步都必须在有穷时间内完成。
确定性。 对于每种情况下所执行的操作,在算法中都有确切的规定,不会产生二义性,使算法的执行者或阅读者都能明确其含义及如何执行。
可行性。 算法中的所有操作都可以通过已经实现的基本操作运算执行有限次来实现。
输入。 一个算法有零个或多个输入。当用函数描述算法时,输入往往是通过形参表示的,在它们被调用时,从主调函数获得输入值。
输出。 一个算法有一个或多个输出。它们是算法进行信息加工后得到的结果,无输出的算法没有任何意义。当用函数描述算法时,输出多用返回值或引用类型的形参表示。
二、线性表
- 线性表的定义:由n(n≥0)个数据特性相同的元素构成的有限序列称为线性表。
- 线性表的特点
(1)同一性——线性表由同类数据元素组成。
(2)有限性——由有限个数据元素组成。
(3)有序性——线性表中的数据有先后顺序。 - 顺序表:
顺序存储的特点:(1)逻辑上相邻,物理上也相邻。(2)随机存取。
插入:插在第 i 个结点之前,其余元素需后移 n-i+1 次;
删除:删除第 i 个结点,移动 n-i 次。 - 链表:
(1)链表的特点:逻辑上相邻,物理上不一定相邻。非随机存取。
(2)头指针是指向链表中第一个结点的指针。
(3)头结点是在链表的首元结点之前附设的一个结点;数据域内只放空表标志和表长等信息。
(4)首元结点是指链表中存储第一个数据元素a1的结点:
①单链表尾结点的条件:p->next== Null
②循环单链表判尾的条件:
判尾:非空的循环单链表head的尾结点p满足( p->next==head)
(5)单链表的插入步骤: