![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
写bug战神
这个作者很懒,什么都没留下…
展开
-
leetcode-使用迭代和递归法翻转链表(C++详细注释)
leetcode-使用迭代法翻转链表(C++详细注释)原创 2022-04-28 14:26:20 · 1775 阅读 · 0 评论 -
简洁堆排序实现——C++
#include<iostream>using namespace std;#include<vector>class MySort{public: void adjustHeap(int* arr, int cur, int len){ int parent = cur; for(int child = 2*cur + 1; child < len; child = 2*child + 1){ // 向下更新孩子节点直至堆内元素全部稳定 if(chi原创 2021-06-04 10:26:43 · 172 阅读 · 0 评论 -
关于用栈实现括号匹配的检验
关于用栈实现括号匹配的检验:把当前输入的符号与栈顶元素进行比较,若能够配对,则弹出栈顶元素;若无法配对,则当前输入的符号压栈。最后,若栈内元素为空,则表明输出的括号能够一一配对。#include<iostream>#include<stack>using namespace std;int main(){ stack<char> s; while...原创 2019-07-29 17:23:12 · 388 阅读 · 0 评论 -
用栈实现简单的表达式运算
用栈实现简单的表达式运算:关键在于建立两个栈,一个数字栈,一个算符栈,根据输入的先后顺序不同,算符间的优先关系也不同,严蔚敏《数据结构》第53页描述了这种优先关系。为了简单起见,计算过程中不涉及括号且数字均为一位。注意一个技巧:在算符栈中首先压入一个’#'作为栈底元素,方便进行判断表达式是否输入结束。#include<iostream>#include<stack>...原创 2019-07-30 09:48:15 · 555 阅读 · 0 评论 -
关于kmp算法中的next数组的实现及其改进(详细解释)
kmp算法中next数组实现的过程其实是在模式串中比对前缀字符和后缀字符,最终确定k的过程。其中,若前缀和后缀中有n个字符相等,那么k = n + 1。为了便于处理下标,选择将next数组与模式串的字符数组的第一位置空,同样在get_next函数中比较元素大小时,因为 i 与 j 比实际位置大1,所以应写成if (j == 0 || c[i - 1] == c[j - 1])。注意在kmp算法...原创 2019-08-01 10:43:19 · 1934 阅读 · 0 评论 -
如何用一次循环找出某个数组中最小的两个数
在构造Huffman树的过程中,需要考虑两个最小权值结点的合并问题,这就需要我们找到结点数组中权值最小的两个结点,具体思路是构造两个变量min1,min2,然后让他们与数组中的其他权值比较,其中min1存放的是当前数组中的最小权值,在比较过程中,当发现有更小的权值时,就把min1的原始值赋予min2,min1继续存放最小值,这样在O(n)的时间复杂度下便可完成寻找。注意:若min1与min2的初...原创 2019-08-07 10:38:55 · 1164 阅读 · 0 评论 -
构造一棵简单的Huffman树并对输入带权值的字符进行Huffman编码
#include<iostream>#include<algorithm>using namespace std;bool cmp(int a, int b){ if (a > b) return false; else return true;}//定义Huffman树的结点struct HuffmanNode{ int parent,...原创 2019-08-07 13:49:57 · 2707 阅读 · 0 评论 -
递归方法实现求含有n个元素的集合的幂集——以集合{1,2,3}为例
使用递归方法的主要思路是:对于某个元素来说,在幂集中只有两种情况:出现或不出现。当我们面对第 i 个元素时,我们会想:假如已经知道第 i + 1 到第 n 个元素是否出现就好了,那样我们就只需要让当前(第 i 个)元素出现或不出现即可得到两个不同的子集合,“出现”或者“不出现”也就变成了两种不同的递归入口。而对于第 i + 1 个元素来说也是如此,于是就得到了递归关系。递归的出口就是当 i + 1...原创 2019-08-07 19:49:43 · 1795 阅读 · 0 评论 -
CCF认证 - 201903-2 二十四点(100分)
千言万语一句话:注意细节!!!采用栈这种数据结构进行计算,关键是确定栈顶运算符与当前输入运算符的优先级关系。特别需要注意的是:1、在表达式输入时可以不用开辟字符数组进行存储,可以随着表达式的输入来进行出栈、入栈与计算。2、需要注意当使用 scanf 输入 n 的值时,因为后面要用 c=getchar() 接收字符,所以在中间要用一个空的 getchar() 吃回车(此外在2个接收字符的 c...原创 2019-08-28 22:48:57 · 378 阅读 · 0 评论