数据结构的基本概念
1、数据:客观的现实在计算机中的符号表示
2、数据对象:性质相同的元素集合
3、数据元素:具有一定意义的基本单位,被计算机整体处理
4、数据项:不可再分的最小数据单位
数据 > 数据对象 > 数据元素 > 数据项
数据结构研究的是数据元素之间的关系
数据结构的三要素:逻辑结构、物理结构、算法
数据元素之间的关系
逻辑结构:逻辑上的联系
常见的逻辑关系:
集合——数据元素之间没有必然联系,大家处于一个集合中
线性(一对一)——除了第一个元素和最后一个元素之外,其余元素都只有一个前驱和后继
树(一对多)—— 目录结构的关系
图(多对多)——地图
物理结构:存储到计算机中的结构
计算机本身的存储就是线性的
存储结构:
顺序结构:用一片连续内存空间存放数据——对应到C语言是数组(有序性、单一性、连续性),数组也是一种数组结构:顺序表。
特点:1、访问数据方便,时间复杂度O(1) 2、插入和删除数据不方便,时间复杂度O(n)
链式结构:可以用来表示一种线性关系,彼此之间必须联系起来。通过指针指向下一个数据元素。
特点:1、访问数据需要遍历O(n) 2、插入和删除方便O(1)
索引结构:找——索引表(有序)——数据
散列(哈希)结构:找key——散列函数
算法——解决问题的步骤
不同的数据结构决定了对应的算法不同
算法的特性:输入、输出、有穷性、确定性、可行性
设计算法:正确性、健壮性、可读性、时间和空间效率
算法的好坏度量:
算法效率:时间复杂度
空间复杂度
线性表
顺序表:以顺序结构存储的线性表(C语言中就是数组)
链式表:以链式结构存储的线性表
链式表
一个节点中:数据域、指针域
首节点:存放第一个有效数据的节点
尾节点:存放最后一个有效数据的节点,尾节点指针域为NULL
头节点:数据部分不关心,只是为了方便操作链表
数据结构的描述
struct node
{
int data; 要处理的数据类型为int型
struct node *pnext; 指向下一个节点
}
相关算法
1、创建空链表

2、插入数据

3、查数据——遍历打印,逐个节点访问

4、链表的有效长度——有效节点的个数(头节点不算)

5、找值

6、改值

7、删除





