![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
走过那年CK
苦逼大学生IT狗一枚。
展开
-
逆波兰表达式的计算问题
逆波兰表达式分两步,首先要把中缀表达式转换成后缀表达式,然后根据后缀表达式求值。include include include include using namespace std; char* MidExpressionToLastExpression(char * szExpression); int GetAnswerByLastExpression(char* szExpression原创 2016-04-04 10:28:04 · 481 阅读 · 0 评论 -
KMP算法(c++)实现
KMP算法是一种模式匹配算法,以前早期的字符串匹配算法是一种简单的朴素匹配算法。附上代码:#include <stdio.h>#include <stdlib.h>#include <string>using namespace std;//得到next数组void Get_KMP_NEXT(int next[],string str_suit){ int i=1; int原创 2016-04-05 18:40:25 · 281 阅读 · 0 评论 -
二叉树的创建即遍历(递归方式)
最近准备把数据结构书上的算法用代码实现一遍,在二叉树这块遇到了一点小问题,发现是自己指针这块还没过关,研究了一个小时候,终于明白二级指针的使用情况,(那些自认为自己指针过关的同学可不要停留在一级指针这块,往后深度,你会发现多级指针使用时太爽了。) 好了,复习了一波指针的相关内容,我们来查看具体的二叉树的创建于与遍历的代码;#include <stdio.h>#include <s原创 2016-04-06 23:21:57 · 4956 阅读 · 0 评论 -
二叉树的非递归遍历方法(前序,中序,后序)
二叉树的非递归遍历用到栈这个数据结构前序中序,度比较简单,但是在后序遍历时因为我们先打印子节点数据,此时该节点还不能删除,因为我们还要通过它得到右节点,所以删除一个节点的条件是该节点没有左右孩子,或是访问到该节点时,前一个节点应该是该节点的左右孩子其中的一个,这个表名这个节点的孩子节点之前已经访问了,现在该访问该节点啦。 附上源代码#include <stdio.h>#include <stdl原创 2016-04-07 23:29:03 · 399 阅读 · 0 评论 -
线索二叉树的建立与遍历
#include <stdio.h>#include <stdlib.h>typedef enum{LINK=0,THREAD} PointerTag;//为0表示右左右孩子,为1表示没有,则为线索struct BiThrNode{ char data;//节点存储的数据 BiThrNode* lchild,*rchild;//左右孩子 PointerTag LTag原创 2016-04-09 00:07:34 · 531 阅读 · 0 评论 -
哈夫曼编码的生成
哈夫曼的原理教科书上已经讲得很详细了。这里不做详细介绍,但书上的代码有的很不好理解,其中在这里给大家先介绍一个查找一个序列的两个最小数的算法。#include <stdio.h>#include <stdlib.h>void mainWWWW(){ int a[]={10,20,1,2,3,2,11,33}; int min1=10000,min2=10000; int原创 2016-04-09 17:57:12 · 986 阅读 · 0 评论 -
二叉树根据先序,中序创建二叉树,后序,中序创建二叉树,层次序列,中序遍历创建二叉树。
在二叉树的创建过程中,先序,后序,层次序列这三种可以确定根的位置,只有中序序列可以确定左右子树的位置。所以我们可以通过(先序,中序),(后序,中序),(层次序列,中序)这三种情况创建一颗确定的二叉树。相关代码如下。#include <iostream>#include <queue>#include <deque>using namespace std;typedef char Elemen原创 2017-04-02 14:35:00 · 1556 阅读 · 0 评论