前言:2019考研,我考的专业课是数据结构(含C语言程序设计),在考研备考期间,初学数据结构,感觉也是很曲折。刚开始复习看着每道题只有关键代码很头疼,为了保证自己的代码有同样的效果,不得不花很多时间去完善非重点部分的代码来完整运行起来,暑假写了挺多这种细枝末节的代码,也记录了一些放在我的Github上,不过没有整理目录,看着很乱,今天无意中看到了,所以特地抽出时间整理了一下目录,希望对同样备考的您有帮助,省下您一些写程序框架的时间或者是给您一点启发。备考匆忙,加上我是跨考,写下的难免会有错误,希望大家发现了能给我指出,甚是感谢!如果您有时间,也可以对我的进行整理补充或者是开一个更专业的板块,为后面的学弟学妹们留点东西。
一、C
C的应用
- 不用栈实现单括号匹配
- 使用二级指针做矩阵加法
- 计算比赛前多少名的平均分
- 通过递归判断给定序列是否是回文序列
- 使用倒推法求解原始物体数目(猴子分桃问题)
- 求解一元一次方程
- 矩阵转置
- 身份证校验
- 汉诺塔
- 按某些规则计算前n项累加累乘的结果
- 归并两个非递减数组保留重复项
- 求旋转数组中最小值以及某个确定值位置
- 找升序序列的中位数
- 求两递增集合的交集
- 多种方法求最大子列和并输出最大子列
- 八皇后问题
- 利用二分法计算任意数开方
- 字符串—求全排列
- 字符串—空格替换
- 字符串—KMP算法
- 字符串—找单词共同后缀串
位运算
- 位运算–判断一个数是否是2的n次幂
- 位运算–判断一个数的奇偶性
- 位运算–实现算数运算加减乘除
- 位运算–将整型数据按字节存入char型数组中
- 位运算–将无符号整型数转换成十六进制存在char型数组中
- 位运算–找出数列中出现次数为奇数的数
- 位运算–求一个数原码对应的补码
- 位运算–输出长度为n的二进制数中不包含101子串的总数目
二、数据结构
链表
PS.感觉放C那里更和谐,为了和后面衔接,放数据结构里吧
- 单链表的基本操作
- 单链表插入排序
- 两种不同的单链表逆序
- 双向链表
- 双向循环链表的基本操作
- 将两个顺序相反的链表归并成一个有序链表
- 对链表中绝对值相同的节点去重
- 双向循环链表非递减排序
- 约瑟夫问题
- 魔术师发牌问题
- 十字链表存储稀疏矩阵
栈
队列
PS.这个做过的题不是很多
树
- 静态链式二叉树的创建及各种遍历方式
- 二叉树层次遍历
- 二叉树非递归遍历
- 动态创建二叉树并遍历输出
- 动态输入二叉树并通过后序遍历求深度
- 求二叉树宽度
- 求二叉树宽度2
- 线索化二叉树
- 二叉排序树
- 将数组中满二叉树的前序序列转成后序序列
- 已知先序序列和中序序列还原二叉树
- 根据给定的满二叉树序列构建二叉树
- 已知前序中序或者是中序后序还原二叉树完整版(递归+非递归)
- 判断标准形式的二叉树是否是堆
- 树–寻找两个节点最近的公共祖先
- 天勤第六章思考题1—输出二叉树根节点到每个叶子节点的路径
- 天勤第六章综合应用题1.10—对二叉树进行所谓的双序遍历
- 天勤第六章综合应用题1.11—设计中序线索二叉树并找某些节点的信息
- 天勤第六章综合应用题1.2—计算节点数
- 天勤第六章综合应用题1.3—计算叶子节点数
- 天勤第六章综合应用题1.4—借助树的右指针域将树的叶子节点串成链表
- 天勤第六章综合应用题1.5—输出带双亲域的树的所有节点到根节点的路径
- 天勤第六章综合应用题1.7—求二叉树中某个数所在的层
- 天勤第六章综合应用题1.8—根据权值构造郝夫曼树并计算带权路径长度
图
- 图–使用邻接矩阵创建图并用多种方式遍历
- 图–使用邻接表创建图并用多种方式遍历
- 图–Prim(普里姆)算法
- 图–Kruscal(克鲁斯卡尔)算法
- 图–最短路径 Dijkstra(迪杰斯特拉)算法
- 图–最短路径 Floyd(弗洛伊德)算法
- 图–拓扑排序算法
- 通过深度优先遍历判断有向图是否有环
- 图—求不带权无向连通图距顶点最远的顶点
- 图—判断两个顶点之间是否有路径
- 图–判断无向图G是否是一棵树
- 图–输出图中连续为1的最大块数
- 天勤第七章综合应用题1.7—将图的邻接表改成邻接矩阵
- 天勤第七章综合应用题1.9—非递归DFS遍历以邻接表方式存储的图
排序
- 排序–常见的几种排序方法及思想
- 排序–冒泡排序
- 排序–基于数组的直接插入排序
- 排序–基于链表的直接插入排序
- 排序–折半插入排序
- 排序–希尔排序
- 排序–简单选择排序
- 排序–简单选择排序递归版
- 排序–快速排序
- 排序–二路归并排序
- 排序–堆排序
以上部分的代码来自天勤数据结构和1800习题集,剩下的是我在其他地方看到记录的,大家可以根据自身需要,择取您薄弱的地方重点做一做,争取不留短板,不留遗憾。