大话数据结构

Executive Summary

核心观点(金字塔原理)

结论先行: 数据结构是程序设计的基础,理解各种数据结构的特性和适用场景是写出高效程序的前提。

支撑论点:

  1. 线性结构(数组、链表、栈、队列)是最基础的数据组织形式,各有优缺点
  2. 算法必须满足五大特性:输入、输出、有穷性、确定性、可行性
  3. 字符串匹配等经典问题有KMP等高效算法解决方案

SWOT 分析

维度 分析
S 优势 语言通俗易懂,适合初学者入门,用生活案例解释抽象概念
W 劣势 内容相对基础,对有经验的开发者深度不足
O 机会 数据结构是所有编程语言和框架的基础,永不过时
T 威胁 高级语言封装了底层实现,易让开发者忽视基础原理

适用场景

  • 编程初学者系统学习数据结构
  • 准备技术面试复习基础知识
  • 非科班出身补充计算机基础

数据结构是一种或多种特定关系的数据元素的集合
算法的特性,1 输入 2 输出 3 有穷性 4 确定性 5 可行性
0个或多个数据元素的有限序列:线性表
  • 线性表的顺序存储结构,指的是用一段连续的存储单元依次存储线性表的数据元素
  • 线性表的顺序存储结构的优缺点
优点 缺点
无须为表示表中元素之间的逻辑关系而增加额外的存储空间 插入和删除操作需要移动大量元素
可以快速地存取表中任一位置的元素 当线性表长度变化较大时,难以确定存储空间的容量;造成存储空间的”碎片”
  • 栈是限定仅在表尾进行插入和删除操作的线性表
  • 队列是只允许在一端进行插入操作,而在另一端进行删除操作的线性表
  • 串是由零个或多个字符组成的有限序列,又名叫字符串
  • 循环队列判断条件: front队首,rear队尾,m队最大容量; 队空判断: front=rear, 队满判断: front=(rear+1)%m 当前队列中元素数目: n=(rear-front+m)%m
  • KMP算法