数据结构和算法
2025-01-10 11:38:31 0 举报
AI智能生成
江南大学851历年算法习题和代码,数据结构+算法所有重点内容和标准代码(不是伪代码,可运行)。无论是需要考江南大学851还是学习数据结构都可以用到
作者其他创作
大纲/内容
线性结构
表
顺序表
删除
插入
习题:数组循环移位(2018 第一题)
习题:删除表中所有等于X的元素,时间复杂度O(n),空间复杂度O(1)
习题:数组按某种长度翻转(思想同2018年真题思想,翻转交换位置)
习题:吐泡泡,相邻oo则合并成O,相邻OO则消失,输出最终的泡泡形状,从左向右的方式
链表
单链表
插入
删除
创建
头插法创建
尾插法创建
逆置
头插法逆置
就地逆置
是否有头结点的处理操作
习题:单链表的删除操作(2016 第二题 2020 第一题)
习题:线性表的概念以及单链表删除头结点的操作(2021 第一题)
习题:删除循环单链表中的某个结点
习题:判断单链表中是否存在环
习题:在不改变单链表的前提下获取倒数第k个结点的值
习题:合并有序单链表
习题:删除递增单链表中重复的结点
习题:判断两个单链表中是否存在公共结点
双链表
循环双链表
插入
删除
习题:双链表的基本操作(2022 第五题)
栈
普通栈
链栈
共享栈
前缀表达式(波兰序列)
后缀表达式(逆波兰序列)
中缀表达式转后缀
括号匹配
进制转换
习题:基于单链表的括号匹配(2017 第二题)
习题:列车进站问题(2018 第三题)(相当于判断出栈序列是否合法)
习题:合法出栈序列(2020 第四题)
习题:栈的概念和着色问题(2021 第二题)
习题:进制转换(2022 第六题)
习题:进栈转换(2023 第一题)
习题:利用栈使其的进出栈和获取最小值的时间复杂度都为O(1)
习题:前后缀表达式的转换(中缀转后缀)
习题:判断进出序列是否合法
习题:利用栈模拟队列
队列
循环队列
双端队列(前后两端都可以进出队)
习题:模拟队列(2019 第二题)
循环链式队列(2023 第八题)
文件的创建和输入输出操作
字符串匹配算法
BF算法(不需要了)
KMP算法
习题:大小写字符转换(2019 第一题)
习题:字符串排序(2019 第三题)
最小生成树算法
Prim算法
Kruskal算法
习题:Prim算法和Kruskal算法(2017 第八题)
习题:最小生成树(2019 第四题 2022 第三题)
习题:Kruskal算法(2023 第三题)
习题:Dijkstral算法(2023 第四题)
拓扑排序
树形结构
二叉树
二叉树的遍历
先序遍历
中序遍历
后序遍历
层序遍历
线索二叉树
先序线索二叉树
中序线索二叉树
后序线索二叉树
哈夫曼树(最优二叉树)
创建哈夫曼树
哈夫曼编码
习题:哈夫曼树的建立和性质(2016 第三题)
习题:根据遍历序列构造二叉树(2017 第二题)
习题:求二叉树的宽度(2018 第三题)
习题:最近公共祖先(2018 第四题)
习题:建立二叉排序树(2020 第二题)
习题:统计叶子结点个数(2020 第五题)
习题:哈夫曼新编码方案(2021 第六题)
习题:完全二叉树性质与计算(2022 第二题)
习题:二叉树的遍历(2022 第七题)
构造二叉树与线索二叉树(2023 第二题)、
习题:对称二叉树
习题:交换所有左右子树
习题:判断二叉树是否为完全二叉树
习题:以孩子兄弟链表为存储结构,递归求树的深度
习题:根据两个序列构造二叉树
习题:树、二叉树、森林的转化
完全二叉树构造成二叉链表表示
排序算法
交换排序
冒泡排序
快速排序
插入排序
直接插入排序
折半插入排序
希尔排序
选择排序
简单的选择排序(每次选择最小的元素进行交换)
堆排序
归并排序
习题:堆排序大、小根堆(2016 第四题)
习题:合并两个有序序列(2016 第五题)
习题:快速排序划分操作(2017 第一题)
习题:快速排序(2020 第三题)
习题:冒泡排序和快速排序(2021 第三题)
习题:堆排序、归并排序、快速排序(2022 第四题)
习题:快速排序(2023 第五题)
习题:不使用递归的方式实现归并排序
图形结构
无向图(无方向的图)
有向图(有方向的图)
图的存储结构
邻接矩阵
邻接表
图的遍历
DFS(深度优先遍历)
BFS(广度优先遍历)
习题:图的搜索(2019 第七题)
习题:图的连通性问题(2021 第七题)
习题:邻接矩阵和邻接表的转化
习题:求解关键路径
习题:判断是否存在从v到w的路径
最短路径算法
单源最短路径算法(Dijkstra算法)
多源点最短路径算法(Floyd算法)
查找算法
顺序查找
二分查找
分块查找
习题:考察二分查找(2016 第六题)
习题:字符数组遍历查找(2017 第四题)
树型查找
AVL树(平衡二叉树)
LL平衡旋转(右单旋转)
RR平衡旋转(左单旋转)
LR平衡旋转(先左后右双旋转)
RL平衡旋转(先右后左双旋转)
红黑树
B树
习题:B树的基本概念与查找操作(2022 第八题)
BST(二叉排序树)
查找
删除
构造
插入
算法复杂度
动态规划
习题:矩阵连乘问题(2016 第七题)
习题:最长公共子序列(2017 第七题)
习题:按位DP统计1的个数(2018 第五题)
习题:01背包问题(2018 第七题)
习题:最优路线问题(2018 第六题)
习题:最长公共子序列(2020 第七题)
习题:汽车做站问题(2020 第八题)
习题:动态规划基本概念与过程(2021 第四题)
习题:矩阵连乘问题(2023 第六题)
习题:最长公共子序列问题(2023 第七题)
习题:最小硬币找零问题
习题:最大子段和问题
习题:完全背包问题
习题:凸变形三角形剖分
习题:最优二叉搜索树
习题:存在多少条路径问题
习题:完全平方数
习题:合并石头
习题:最长上升子序列
习题:最小钱币数
习题:钢条切割问题
递归和分治算法
习题:斐波那契数列和快速幂结合(2017 第五题)
习题:大整数相乘问题(2017 第六题)
习题:寻找最大最小值(2018 第八题)
习题:嵌套表达式(2019 第五题)
习题:砝码组成(2019 第八题)
习题:分治与动态规划的区别(2021 第四题)
习题:斐波那契数列(2021 第五题)
习题:全排列问题
习题:阶乘函数
习题:Ackerman函数(不写)
习题:整数划分问题
习题:汉诺塔问题
习题:棋盘覆盖问题
习题:多位元素
习题:逆序对(利用归并排序的思想)
回溯算法
习题:图搜索(2019 第七题)
习题:装载问题
习题:批处理作业调度
习题:N皇后问题
习题:回溯法处理01背包问题
习题:子集树和排列数
符号三角数
最大团问题(子集树)
m着色问题(就是N皇后,只不过合法性的判断条件不同)
分支限界法
习题:连续邮资问题(2018 第六题)
习题:布线问题
习题:分支限界法处理01背包问题
迷宫问题
岛屿的陆地面积
并查集
Kruskal算法涉及
贪心算法
习题:汽车加油问题(2016 第八题)
习题:Prim和Kruskal(2017 第八题)
习题:最小乘船问题(2020 第六题)
习题:装载问题
习题:活动安排问题
习题:贪心处理01背包问题
习题:多机调度问题
0 条评论
下一页
为你推荐
查看更多