![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构学习笔记
文章平均质量分 61
沐忞的部屋
欢迎关注公众号:沐忞的部屋
展开
-
二叉树线索化与遍历线索二叉树
若某程序中所用二叉树经常遍历或查找节点在遍历所得线性序列中的后继和前驱,适用于线索链表存储结构即线索二叉树。原创 2016-10-29 22:51:44 · 267 阅读 · 0 评论 -
字符串的数组表示
//这里解释有误,看课本,待整理。。。。。头文件:#include strlen()函数用来计算字符串的长度,其原型为:unsigned int strlen (char *s);【参数说明】s为指定的字符串。strlen()用来计算指定的字符串s 的长度,不包括结束字符"\0"。【返回值】返回字符串s 的字符数。注意一下字符数组,例如char原创 2016-10-24 12:16:57 · 1518 阅读 · 0 评论 -
理解矩阵
前不久chensh出于不可告人的目的,要充当老师,教别人线性代数。于是我被揪住就线性代数中一些务虚性的问题与他讨论了几次。很明显,chensh觉得,要让自己在讲线性代数的时候不被那位强势的学生认为是神经病,还是比较难的事情。可怜的chensh,谁让你趟这个地雷阵?!色令智昏啊!线性代数课程,无论你从行列式入手还是直接从矩阵入手,从一开始就充斥着莫名其妙。比如说,在全国一般工科院系教转载 2017-02-12 13:13:02 · 192 阅读 · 0 评论 -
动态规划之钢条切割问题
动态规划用于解决最优化问题,即有很多可行解,每个解都有一个值,希望找到最优值(最大值或最小值)得解。解决的问题具有最优子结构性质:最优解由相关子问题的最优解组合而成,子问题可独立求解。问题描述:给定钢条,总长度为n,价格随长度i为Pi,求最大收益Rn。问题分析:长度为n的钢条有2的n-1次方种切割方案。 求解规模为n的原问题,县求解形式完全一样但规模更小的原创 2017-02-12 21:06:00 · 351 阅读 · 0 评论 -
图的邻接矩阵存储
//邻接矩阵法表示图/*#include using namespace std;struct graph{ char vexs[100];//图中顶点的数组 int arc[100][100];//图的邻接矩阵 int numvertexes,numedges;//顶点数和边数}g;void creategraph(graph *g){ int i,j,k; cin>>原创 2016-11-24 23:27:21 · 365 阅读 · 0 评论 -
彻底弄懂最短路径问题
一.问题引入 问题:从某顶点出发,沿图的边到达另一顶点所经过的路径中,各边上权值之和最小的一条路径——最短路径。解决最短路的问题有以下算法,Dijkstra算法,Bellman-Ford算法,Floyd算法和SPFA算法,另外还有著名的启发式搜索算法A*,不过A*准备单独出一篇,其中Floyd算法可以求解任意两点间的最短路径的长度。笔者认为任意一个最短路算法都是基于这样一个事实:转载 2017-01-26 10:25:52 · 298 阅读 · 0 评论 -
广度优先搜索与深度优先搜索
//深度优先搜索#include using namespace std;#define maxsize 1000int mg[10][10]={1,0,1,1,1,1,1,1,0,1,0,0,0,0,0,0,1,0,0,1,0,1,0,1,1,0,1,1,0,1,0,1,0,0,0,0,0,0,0,0,1,1,0,1,1,0,1,1,1,1,0,0,0,0,1,0,0,0,0原创 2016-10-09 18:00:05 · 471 阅读 · 0 评论 -
编程中无穷的表示
int不能表达真正的无穷大或者无穷小。在C语言中,int为整型类型,根据不同平台不同,有16位(2字节)和32位(4字节)两种,其中32位int为目前主流。无论哪种int类型都有其表达范围,其中16位int能表示的范围为-32768~+3276732位int能表示的范围为-2147483648~+2147483647从这个可以看出,int是无法表达真正的无穷大和无穷小的。原创 2017-03-23 09:38:16 · 4657 阅读 · 0 评论 -
递归问题剖析
原来大一时只是简单接触了递归,但是并没有做深入的思考和理解。如今决定在算法上下一番功夫,所以翻出来再次学习,并做此总结。 递归最深层次的精髓我感觉我还不能真正掌握,个人认为这需要大脑具备强大的逻辑推理能力,能够实现凭空的推演。这里总结的只是递归的运用。 满足使用递归的条件为1.有反复执行的过程2.有跳出反复执行的条件。因此在如何编写递归代码也之需两步:1.写出结束循环的条件原创 2016-10-11 22:57:23 · 332 阅读 · 0 评论 -
bellman-ford
#include #include using namespace std;int s,edgenum,nodenum;const int max_edgenum=100;const int max_nodenum=100;struct Edge{ int u,v,cost;}edge[max_edgenum];int dis[max_nodenum];bool Bellma原创 2017-01-16 11:25:41 · 275 阅读 · 0 评论 -
并查集问题
转自http://m.blog.csdn.net/article/details?id=7724401来看一个实例,杭电1232畅通工程首先在地图上给你若干个城镇,这些城镇都可以看作点,然后告诉你哪些对城镇之间是有道路直接相连的。最后要解决的是整幅图的连通性问题。比如随意给你两个点,让你判断它们是否连通,或者问你整幅图一共有几个连通分支,也就是被分成了几个互相独立的块。像畅通工程这原创 2016-12-11 10:40:57 · 394 阅读 · 0 评论 -
最小生成树问题学习总结
//最小生成树之kruskal算法#include #include using namespace std;struct linknode{ int vex1,vex2; int weight;};struct elgraph{ int vexnum,edgenum;};linknode *kruskal_MST(elgraph *G){ linknode *edg原创 2016-12-04 00:37:01 · 575 阅读 · 0 评论 -
二叉树遍历c++实现
//自己还真是个菜鸡,大一学了一年c++,现在还在基础的语法上转圈,还没有意识到c++真正的//的强大之处在于它的多变,封装,等算法告一段落了在考虑是往Java上走还是深造c++#include #include #include using namespace std;struct binode{ char date; binode *lchild,*rchild; bool原创 2016-10-28 17:30:10 · 3340 阅读 · 0 评论 -
图的连通性问题,图转换为树--DNF与BNF生成树
//DNF生成树#include using namespace std;const int max_vex=30;struct linknode//表节点类型定义{ int adjvex;//邻接点(于vi连通的其它节点)在头结点数组中的位置下标 int info;//边或弧的信息,这里表示权值 linknode *nextarc;//指向下一个表节点};struct vex原创 2016-11-26 18:45:32 · 2207 阅读 · 0 评论 -
交换排序模板
//交换排序之冒泡排序#include using namespace std;void bubblesort(int R[],int n){ bool exchange; int i,j,temp; for(i=1;i<=n-1;i++) { exchange=false; for(j=n;j>=i;j--) { if(R[j]<R[j-1]) {原创 2016-12-21 21:16:02 · 225 阅读 · 0 评论 -
选择排序之堆排序
//选择排序之堆排序//这里排序数组要从下标1开始#include using namespace std;void sift(int R[],int low,int hight){ int i=low,j=2*i; int tmp=R[i]; while(j<=hight) { if(R[j]<R[j+1]) j++; if(R[j]>tmp) { R[i]=原创 2016-12-23 15:20:17 · 191 阅读 · 0 评论 -
归并排序
//归并排序//这里排序数组要从下标1开始#include using namespace std;void merge(int R[],int low,int mid,int hight){ int *R1=new int[mid-low+1]; int i=low,j=mid,k=0; while(i<mid&&j<=hight) { if(R[i]<R[j]) {原创 2016-12-23 19:05:48 · 210 阅读 · 0 评论 -
内排序之插入排序
//插入排序之直接插入排序#include using namespace std;int R[100];int n;//所需排列的序列元素的个数void main(int R[],int n){ int i,j; int tmp; for(i=1;i<n;i++)//从第二个元素开始 { if(R[i]<R[i-1])//提高效率 { tmp=R[i];原创 2016-12-20 21:13:46 · 171 阅读 · 0 评论 -
数据结构与算法的知识模块
能够坚持的做一件事情是很不容易的,前一周虽然我在兴趣的驱使下坚持了几天,但是被迫去做了两天兼职,打断了学习状态,再调整回来又花了两天时间,究其原因是我没有定下一个明确的目标和进度条。所以在这里总结将要学习的算法的知识。另外听说跑步,阅读可以让自己从假期中快速调整回来状态,下次要试下。 进入正题:A算法定义与特性,算法的时间复杂度和空间复杂度的度量等概念性质问题B线性存储结构:线性表原创 2016-10-17 12:23:56 · 258 阅读 · 0 评论 -
kmp算法--通俗易懂
今天花了好几个小时学习这个算法,担心之后忘记,所以在这里做些总结。也方便其它人学习借鉴。 学习理解的过程中也看了很多帖子,但感觉说的都不是特别清楚,也对照了课本,但是大量的推理证明并不到好理解,没有与程序结合起来讲,明明已经明白的原理在教材中还要费力理解。所以文末我会推荐一篇写的特别好的博文,希望能帮到大家。 正文:1. kpm算法的原理 推荐网址htt原创 2016-10-22 23:27:37 · 425 阅读 · 0 评论 -
编程基础小语法
c语言question1 #include printf("",) scanf("",&)%d:以带符号的十进制形式输出整数%u:以无符号十进制形式输出整数%o:以八进制无符号形式输出整数%x:以十六进制无符号形式输出整数%c:以字符形式输出,只输出一个字符%s:输出字符串%f:以原创 2017-04-17 21:18:30 · 290 阅读 · 0 评论