11.图结构与基本搜索
图结构与基本搜索
本章介绍图的基本概念、存储方式以及两种基本图搜索算法——深度优先搜索(DFS)和广度优先搜索(BFS),涵盖图的定义、分类、存储结构及其在代码中的实现,并提供DFS和BFS的典型模板代码。
本章介绍图的基本概念、存储方式以及两种基本图搜索算法——深度优先搜索(DFS)和广度优先搜索(BFS),涵盖图的定义、分类、存储结构及其在代码中的实现,并提供DFS和BFS的典型模板代码。
哈希(Hash)也叫散列,记录存储位置与关键字之间存在对应关系 \(Loc(i)=H(key_{i})\),从而在查找数据时可以接近 \(O(1)\) 的效率直接找到位置,而不需要顺序摸排或二分查找。
二叉树作为一种基础的数据结构,其独特的递归定义和多样化的类型,如满二叉树、完全二叉树等,为解决诸如查找、排序及编码等问题提供了强大的支持,而哈夫曼编码通过构建最优二叉树实现了数据的高效压缩。
将无序数据变为有序,不明确指定顺序的情况下默认从小到大排序。
排序需要具体的方案来实现,不同的方案执行效率不同,通常用元素的“比较次数”与“移动次数”作为执行的代价来衡量不同排序算法的效率。
字符串生活中最常见的数据类型,任何显示出来可查看的文本内容都是字符串,比如“123456
”、“abcdefg!@#$
”。
在一个网页上快速地查找某个内容,在一个名单里快速确定某个同学是否存在以及在第几行,都是字符串处理的任务。
线性表是数据结构的基础,分为顺序存储与链式存储。顺序表通过数组实现,支持快速随机访问,适用于频繁读取的场景;链表通过节点链接实现,适合频繁增删操作。本文详细介绍了顺序表的基本操作、STL中的vector容器、二分查找算法,以及单链表、循环链表和双向链表的实现与应用。通过实例演示了线性表在多项式表示中的使用,帮助掌握线性表的核心概念与操作技巧。
本章讲解C语言中函数与结构体的核心概念。函数通过定义、调用与参数传递实现代码复用与逻辑分离。递归用于解决分治问题,需注意栈溢出风险。结构体封装多种数据类型,定义自定义对象,支持成员函数与运算符重载,提升代码可读性与维护性。实例演示函数、递归与结构体的应用,帮助掌握模块化编程与复杂数据管理。
本章介绍数组与循环结构。内存存储运行数据,数组管理同类型数据集合,占用连续内存空间。定义数组通过指定类型和大小,支持多维数组。循环包括for
、while
、do...while
,用于重复执行代码块,支持嵌套及控制语句break
和continue
。实例展示如何应用这些概念解决编程问题,如分糖果游戏和质数口袋问题,强调基础知识的重要性。核心技能涵盖变量作用域、内存管理和逻辑控制。