引言
数据结构是一种计算机科学技术领域广泛使用的专业术语。数据结构可以理解为:数据 + 结构。数据是描述客观事物的符号,为程序操控,存储在计算机上,结构包括数据的逻辑结构和存储结构。而数据结构+算法就等于程序,本系列的学习笔记将整理数据结构的相关知识,包括链表,循链表,队列,栈,树,图等知识。
一、数据结构中相关概念
1.1数据的定义
描述信息的载体,数据能够被计算机识别并存储,并且能够参与计算机内部的运算
1.2结构的定义
结构的定义是用来描述数据与数据之间的关系
1.2.1 数据与数据之间存在逻辑关系有:
线性关系(链表),层次关系(树),网状关系(图)
1.2.2 线性结构:
头结点只有着后继结点,尾结点只有这前驱节点,其他的节点都有着一个前驱节点和一个后继节点
1.2.3 层次结构:
根节点没有前驱节点,其他节点有前驱节点,后继结点的数目可以有任意多。
1.2.4 网状结构:
每一个节点都可以有着多个前驱节点和多个后继节点
1.3 数据结构的定义
数据结构指的是数据元素及数据元素之间的相互关系,或者组织数据的形式。
1.3.1 数据之间的相互关系
(1)逻辑结构:数据运算之间的抽象关系。
(2)存储结构:逻辑结构在计算机中具体实现方法,分为顺序存储方式、链接存储方式、索引存储方式、散列存储方法。
(3)数据运算:对数据进行的操作,如插入,删除,查找,排序等。
二、算法的相关知识
2.1算法的定义:
算法是一个有限规则的有序的集合,确定了解决某一问题的一个运算序列
2.2 算法的特点:
算法的特点有,有穷性,确定性,可行性等的特点。
注意:优秀的算法有着运算的时间短,程序占用的内存空间少,便于维护等特点。
三、顺序表
3.1 顺序表的定义:
线性表的顺序存储叫做顺序表
3.2 顺序表的结构:
#define N 20
#define datatype int
typedef struct {
datatype data[N];
int pos;
}seqlist_t;
3.3 顺序表中的成员关系
data[0]:线性表的表头,没有前驱节点,只有后继节点
data[19]:线性表的尾节点,没有后继节点,只有前驱节点
data[n]:data[n-1]就是他的前驱,data[n+1]就是它的后继,最终通过这种方式构成线性表
3.4 顺序表的优缺点
3.4.1顺序表的优点:顺序表的结构简单,内存在内存上是连续的,对于顺序表的操作可以通过下标完成。
3.4.2顺序表的缺点:顺序表的扩展性非常的差,顺序表的位置插入和位置删除的时间复杂度非常的高。
四、单链表
4.1单链表的定义:
线性表的链式存储就是单链表
4.2 单链表的结构
4.2.1单链表的特点
单链表没有个数限制,在使用的时候就是通过动态分配内存的方式来开辟节点空间,开辟的新节点和原来的单链表通过一个指针进行关联
4.2.2单链表节点的格式