数据结构
白日梦想家_pf
这个作者很懒,什么都没留下…
展开
-
串的基本操作、堆分配存储(详细注释) 严蔚敏
#include<stdio.h>#include<string.h>#include<math.h>#include<malloc.h>#include<iostream>using namespace std;typedef struct HString{ char *ch; //若是非空串,则按串长分配存储区,否...原创 2019-04-10 16:14:10 · 1067 阅读 · 0 评论 -
图解递归法创建二叉树(图文并茂)
建立如图所示二叉树**基本步骤:**说明:每个中性笔画的框代表真实分配内存建立的节点。铅笔画的框代表没有真实分配内存,没有建立该节点。箭头上数字代表执行(调用)的顺序。详细步骤:一次性输入1 2 4 0 0 5 7 0 0 0 3 0 6 0 0.每个数字中间用空格隔开。当主函数调用CreatBinaryTree()函数时,每递归调用一次,1 2 4 0 0 5 7 0 0 ...原创 2019-04-20 10:35:56 · 11278 阅读 · 5 评论 -
插入排序(解决,说明排序后数组首个元素出现离奇数字的原因)
#include<iostream>#include<assert.h>using namespace std;void InsertSort(int *arr,int sz){ for (int i = 0; i < sz-1; i++)// 若为for (int i = 0; i < sz; i++)就会出现下图现象, { int end...原创 2019-04-24 16:21:45 · 217 阅读 · 0 评论 -
二叉树总结(常见的二叉树问题,镜像,求两个距离最远的节点的距离等等)
#include<iostream> // 1#include<stdio.h> // 2 3#include<stdlib.h> // 4 ...原创 2019-04-24 00:11:21 · 189 阅读 · 0 评论 -
二叉树面试题
求二叉树的高度判断一棵树是否为平衡二叉树求二叉树叶子节点的个数求二叉树第k层节点的个数判断某个节点是否存在于二叉树中求二叉树的镜像求二叉树中最远的两个节点之间的距离由前序遍历和中序遍历重建二叉树二叉树的高度题目:输入一棵二叉树的根结点,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。思路: 1、如果树为空,返回02、若果...转载 2019-04-22 20:08:52 · 396 阅读 · 0 评论 -
二叉树的前序、中序、后续、层序遍历
二叉树的基本概念每个结点最多有两棵子树,左子树和右子树,次序不可以颠倒。性质:1、非空二叉树的第n层上至多有2^(n-1)个元素。2、深度为h的二叉树至多有2^h-1个结点。3、满二叉树:所有终端都在同一层次,且非终端结点的度数为2。4、在满二叉树中若其深度为h,则其所包含的结点数必为2^h-1。5、完全二叉树:除了最大的层次即成为一颗满二叉树且层次最大那层所有的 结点均向左靠齐,即...原创 2019-04-22 20:01:26 · 276 阅读 · 0 评论 -
线索二叉树
1.二叉树线索化二叉树的遍历是按照一定的规则把二叉树中的节点按照一定的次序排列成线性序列进行访问的,实质上就是对一个非线性结构进行线索化操作,使得每个节点(除第一个和最后一个外)都有前驱和后继节点,有时为了运算方便需要记录这些前驱和后继节点,称为二叉树线索化,而对于不同的遍历规则,又分为先序线索二叉树,中序线索二叉树,后序线索二叉树。2.线索二叉树的定义(1)思路:一颗具有n个节点的二叉树...转载 2019-04-17 14:34:46 · 356 阅读 · 0 评论 -
手动建立二叉树,并采用前序、中序、后序输出二叉树
**建立如图所示二叉树`#include<stdio.h>#include<stdlib.h>using namespace std;struct NodeBinaryTree{ NodeBinaryTree *_left; NodeBinaryTree *_right; int _date;};NodeBinaryTree *CreatBina...原创 2019-04-17 14:28:21 · 350 阅读 · 0 评论 -
插入排序,希尔排序
插入排序,希尔排序转载 2019-04-25 20:09:00 · 139 阅读 · 0 评论 -
利用栈解决数制转换问题
#include<stdio.h>#include<stdlib.h>#include<math.h>#include<iostream>#include<malloc.h>using namespace std;#define STACK_INIT_SIZE 100#define STACKINCREAMENT 10 ...原创 2019-04-08 23:31:13 · 752 阅读 · 0 评论 -
字符串匹配的KMP算法
转载于:阮一峰http://www.ruanyifeng.com/blog/2013/05/Knuth–Morris–Pratt_algorithm.html字符串匹配是计算机的基本任务之一。举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"?许多算法可以完成这个任务,Knuth-Morris-Pratt算法(简称...转载 2019-04-11 21:59:38 · 164 阅读 · 1 评论 -
递归调用详解(图文并茂)
本文主要依据C程序设计(第四版) 谭浩强著,这本书Hanoi的实例,详细讲解递归调用。代码如下#include<stdio.h>void move(int x, int y){ printf("%c--->%c\n", x, y);}void hanoi(int n, char one, char two, char three){ if (n == 1) ...原创 2019-04-07 14:33:26 · 6800 阅读 · 0 评论 -
插入排序、希尔排序、冒泡排序、快速排序、选择排序、堆排序(详细注释)
**插入排序、希尔排序、冒泡排序、快速排序、选择排序、堆排序**在这里#include<iostream>#include<assert.h>using namespace std;void InsertSort(int *arr,int sz)//插入排序{ for (int i = 0; i < sz-1; i++) { int end ...原创 2019-05-16 09:59:16 · 361 阅读 · 0 评论