
算法学习笔记
J_aSON_
这个作者很懒,什么都没留下…
展开
-
读取扩展先序序列,输出为先序列,中序序列,后序序列
题目:读取扩展先序序列,把它输出成先序序列,中序序列,后序序列,其中先序序列和中序序列用递归方法实现,后序是非递归实现//先写一个用来读取扩展先序序列的函数,再写三个输出函数#include <stdio.h>#include <stdlib.h>#define MAXSIZE 100005/* 二叉链表结点 */typedef struct Node { char data; /* 二叉链表的结点信息 */ struct No原创 2020-11-08 14:27:48 · 721 阅读 · 0 评论 -
31. 下一个排列 leetcode算法题c语言解法
代码:void swap(int *a,int*b){ int t =*a; *a = *b; *b = t;}void nextPermutation(int *nums,int numsSize){ if (numsSize == 0) { return; } int i,j;// 从后往前找到第一个后面比前面大的数 for (i = numsSize - 2; i>=0 && nu.原创 2020-11-01 20:45:48 · 212 阅读 · 0 评论 -
9.2二叉树的遍历
9.2二叉树的遍历二叉树的遍历是指通过一定顺序访问二叉树的所有节点。遍历方法一般有4种:先序遍历,中序遍历,后序遍历及层次遍历,其中,前3种一般使用深度优先搜索(DFS)实现,而层次遍历一般使用广度优先搜索实现(BFS)。先来看前3种遍历方法。前面给出过二叉树的递归定义,这种定义方式将在这里很好的和遍历方法融合在一起。把一棵二叉树分为3个部分:根节点、左子树、右子树,且对左子树和右子树同样进行这样的划分,这样对树的遍历就可以分解为对这3个部分的遍历。读者首先要记住一点,无论是这3种遍历的哪一种,左子树一原创 2020-08-19 13:17:26 · 224 阅读 · 0 评论 -
算法笔记codeup 1918 简易计算器详解(用c++栈实现计算器)
codeup 1918 简易计算器题目描述读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值。输入测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔。没有非法表达式。当一行中只有0时输入结束,相应的结果不要输出。输出对每个测试用例输出1行,即该表达式的值,精确到小数点后2位。样例输入:30 / 90 - 26 + 97 - 5 - 6 - 13 / 88 * 6 + 51 / 29 + 79 * 87 + 57 *原创 2020-08-12 17:41:12 · 697 阅读 · 0 评论 -
stack栈的常见用法详解
1.stack的定义。stack是一种先进后出的容器,要使用stack,应该先添加头文件#include,并在头文件限免加上using namespace std; 其定义的写法和其他STL容器一样,typename可以是任何基本数据类型或容器stack< typename > name;2.stack容器内元素的访问由于stack是一种先进后出的数据结构,在STL中的stack中只能通过top()来访问栈顶元素#include <stdio.h>#include&原创 2020-08-11 10:15:04 · 613 阅读 · 1 评论 -
4.6.2归并排序及其两种实现方式(详解)
4.6.2归并排序及其两种实现方式(详解)原理:将序列两两分组,将序列归并为[n/2]个组,组内单独排序;排序后,将这些组再两两归并,生成[n/4]个组,组内单独排序,以此类推;直到只剩下一个组。时间复杂度为O(nlogn).例子:{66,12,33,57,64,27,18}先分成{66,12},{33,57},{64,27},{18},对它进行排序{12,66},{33,57},{27,64},{18},接着合并 并 排序{12,33,57,66},{18,27,64}最后把这两个也合并了原创 2020-08-04 13:09:18 · 403 阅读 · 0 评论