C++数据结构
好好学习。天天编程
这个作者很懒,什么都没留下…
展开
-
C++菜鸟教程---二叉树的创建以及三种遍历----针对指针内存空间详解
引言 说起二叉树,大部分为可能都或多或少知道一些他的性质,但如果让你用代码创建一个二叉树或遍历某个二叉树可能就变得困难了一些,下面就根据这两个问题进行展开,首先提问一个问题?如果你想创建一颗二叉树,那这棵二叉树各个结点的值你该怎样保存,保存之后又该怎样取出?如果上面一个问题搞清楚了,那么二叉树的创建就不远了创建二叉树的结点一颗二叉树,肯定有一个个的结点,每个结点里面肯定都存有 数据 和 指针(左孩子指针和右孩子指针),下面先看结点的数据结构类型//二叉树结点ty...原创 2020-06-09 22:55:45 · 768 阅读 · 0 评论 -
通俗易懂且最快的理解KMP算法---详解
引言 首先问几个问题?为什么要有KMP算法? 相对于朴素算法的过程,KMP算法的过程有哪些不同? 什么是字符串的前缀和后缀,它到底有啥用? KMP算法中的next数组是什么?为什么要用next数组? next数组的求解过程?怎样用代码实现出来? KMP算法怎样用代码实现?我认为只要弄清楚上面的几个问题,KMP算法也就迎刃而解了。本文就从上面几个问题一个个的铺开一、为什么要有KMP算法? 在字符串中有一类问题是从查找子串问题,假如现在有一个主串(较长一些)和一...原创 2020-06-08 21:29:06 · 1241 阅读 · 0 评论 -
用栈实现中缀表达式到后缀表达式的转变--------C++实现(详解)
变换规则从左到右遍历中缀表达式的每个数字和符号,若是数字就输出,即成为中缀表达式的一部分;若是符号,则判断符号的优先级,是右括号或者优先级不高于栈顶符号的优先级(乘除优先于加减),则栈顶元素一次出栈并输出,并将当前符号进栈,一直到最终输出后缀表达式为止。规则具体解释一、若是数字,就直接输出,这个没啥问题。二、如果符号就分情况:若符号为 左括号( ,就直接入栈。 若符号为 右括号 ),那就去遍历栈,写一个循环依次去遍历栈顶元素,如果栈顶元素不是左括号 ( 。那么就把栈顶元素输出,...原创 2020-06-06 21:07:17 · 2738 阅读 · 1 评论 -
用C++类实现双向链表的功能
实现的功能无参构造和有参构造,其中无参构造只创建了一个头结点。有参构造中实现了在定义单链表的对象时,可以指定出单链表的长度,并且输入对应单链表每个结点的值。 遍历函数,通过这个遍历,可以打印出单链表对象中所有结点的值(不包括头结点)。 获取长度函数,通过这个函数,可以求出单链表的长度,这里的长度不包括头结点,假如链表中有一个结点(不包括头结点),那么他的长度就是1。 插入结点函数,这个函数有两个参数,分别为要插入结点的位置(比如这个为位置为2,那么要插入节点的位置就是在链表中第二个结点后面插入一.原创 2020-06-05 16:55:40 · 1291 阅读 · 0 评论 -
用C++类实现单链表的基本功能(附带开辟内存空间详解)
实现的功能无参构造和有参构造,其中无参构造只创建了一个头结点。有参构造中实现了在定义单链表的对象时,可以指定出单链表的长度,并且输入对应单链表每个结点的值。 遍历函数,通过这个遍历,可以打印出单链表对象中所有结点的值(不包括头结点)。 获取长度函数,通过这个函数,可以求出单链表的长度,这里的长度不包括头结点,假如链表中有一个结点(不包括头结点),那么他的长度就是1。 插入结点函数,这个函数有两个参数,分别为要插入结点的位置(比如这个为位置为2,那么要插入节点的位置就是在链表中第二个结点后面插入一.原创 2020-06-05 11:50:47 · 3649 阅读 · 2 评论 -
使用栈计算后缀表达式的计算-----C++实现(详解)
后缀表达式的计算原理规则:从左到右遍历表达式的每个数字和符号,遇到的是数字就进栈,遇到的是符号,就将栈顶的两个数字依次出栈,进行运算(运算规则:后出栈的数字1 符号 后出栈的数字2 ),再将运算结果进栈,知道获得最终结果。样例:后缀表达式例子:9 3 1 - 3 * + 10 2 / +计算过程:数字9入栈 数字3入栈 数字1入栈 遇到了 - 运算符,,这时候计算 3 - 1 = 2(注意数字的顺序,谁是减数,谁是被减数),数字2入栈 ...原创 2020-06-06 14:49:06 · 10081 阅读 · 2 评论