算法相关
文章平均质量分 58
相关的算法的理解,思路及实现
星码
有效的程序员不应该浪费很多时间用于程序调试,他们应该一开始就不要把故障引入。
展开
-
B-树 实现 插入,遍历,查找
B-树 实现 插入,遍历,查找原创 2021-10-23 12:53:22 · 224 阅读 · 0 评论 -
对PAT中不能使用gets函数的解决方法 与 while(~scanf(“%c“,&c))
对PAT中不能使用gets函数的解决方法 while(~scanf("%c",&c))原创 2021-03-15 22:05:14 · 1042 阅读 · 0 评论 -
python基本数据结构
栈 --- 列表队列 --- 列表链表二叉树排序二叉树原创 2021-02-07 20:15:57 · 306 阅读 · 1 评论 -
c++ STL简单入门(涉及:sort vector stack queue map set)
主要内容有sortvectorstackqueuemapset原创 2020-10-07 21:27:27 · 160 阅读 · 0 评论 -
数据结构习题: 判断是否是二叉查找树的后缀
题目:【问题描述】输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。如果是返回true,否则返回false。【输入形式】输入任意长度的数组,数字之间空格分开【输出形式】true 或者 false【样例输入】输入 5 7 6 9 11 10 8【样例输出】true【样例说明】由于这一整数序列是如下树的后序遍历结果: 8 / \ 6 10 / \ / \ 5 7 9 11因此返回true。【评原创 2020-06-07 17:35:09 · 146 阅读 · 0 评论 -
数据结构习题: 建立广义表表示的树 并 层序输出
题目描述:【问题描述】 给定一颗二叉树,要求从下至上按层遍历二叉树,每层的访问顺序是从左到右,每一层单独输出一行。【输入形式】 广义表表示的二叉树,结点元素类型为整型,且都大于0,例如:1( 2( 3 ( 4, 5 ) ), 6( 7, 8( 9, 10 ) ) )【输出形式】 从下至上,打印每一层的结点元素值,元素间以空格隔开。每层的访问顺序是从左到右,每一层单独输出一行。【样例输入】 1(2(3(4,5)),6(7,8(9,10))),字符串内没有空格【样例输出】 4 5 9原创 2020-06-03 20:00:15 · 1030 阅读 · 0 评论 -
插入排序 冒泡排序 希尔排序 堆排序
插入排序/* 插入排序 */void InsertionSort(int A[], int N) { int P, i; int Tmp; // 第一个元素可视为有序 从第二个元素(p = 1)开始 for (P = 1; P < N; P++) { Tmp = A[P]; /* 取出未排序序列中的第一个元素*/ for (i = P; i > 0 &&...原创 2020-05-05 21:58:45 · 190 阅读 · 0 评论 -
最大(小)堆 --- 相关性质 与 代码实现
堆堆的特性最大堆代码实现建立堆的结构创建堆往堆中插入元素删除堆顶元素并调整建立新堆通过已给定元素建立一个堆测试结果堆的特性最大堆代码实现建立堆的结构用数组保存各个值,因为堆为完全二叉树,所以满足完全二叉树的相关性质 — iii的左子结点下标i∗2i*2i∗2,右子结点下标i∗2+1i*2+1i∗2+1(结点存在且数组有效起始下标为1)数组下标为0的位置保存的为堆中所有可能元素的最大...原创 2020-04-06 22:44:15 · 226 阅读 · 0 评论 -
字符串匹配算法KMP ----- 算法实现 以及 原理讲解
KMP算法在b站上有很多视频有讲到,这些函数是根据自己理解写出来的,因为主函数和KMP函数在两个文件中,并且主函数所在文件有很多其他算法的实现,所以只记录了KMP这个文件中的函数实现,经过验证,可以得到正确的答案(可能仍然会有一些我输入实例中不包含的bug)希望大家可以根据这些函数对KMP算法有更好的理解int KMP_Nextval(string S, string T, int pos) ...原创 2020-03-09 17:31:47 · 113 阅读 · 0 评论 -
实现对二叉树的操作---插入,删除,最大(小)值,遍历,查找
你可以看完代码再看难点,或许会有更深的理解难点:这些操作看起来挺简单,但实现起来确实不好操作:各种函数要考虑为空树的情况,例如:FindMax与FindMin在删除函数中,要用递归的找个删除的元素并删除,不能简单地用Find函数找到就把他删除:因为用Find函数找到这些元素后指针指向这些要删除的元素,当这些元素直接被删除时这些元素的子元素没有办法再与父节点拼接。这就会造成断链而当调用递...原创 2020-03-14 09:27:50 · 287 阅读 · 0 评论 -
栈的应用:表达式求值 (自己写个小型计算器) 讲解+代码实现
文章目录运算优先级定义代码实现定义操作数与操作符栈对栈的相关操作表达式求值相关函数实现定义运算符的优先级实现计算函数实现输入数值函数对栈的一个应用:表达式求值 进行实现这个表达式求值实现与知道中缀表达式求后缀表达式方法差不多这是因为后缀表达式运算符按计算顺序出现,也即知道后缀表达式后可以求出这个算式的值运算优先级定义你可以把θ1\theta1θ1看成栈的的元素,θ2\theta2θ2看...原创 2020-03-28 20:56:38 · 565 阅读 · 1 评论 -
有关多种(单向,双向,循环)链表的操作----初始化,插入,输出,删除,头(尾)插法
代码以功能排布,相同的功能,不同种类的链表放在一块便于对比#include"stdio.h"#include"stdlib.h"typedef struct Node { int data; struct Node* Next;}*PList;typedef struct DNode { int data; struct DNode* Next; struct DNode* ...原创 2020-03-22 13:55:10 · 441 阅读 · 0 评论 -
递归调用与函数名为函数首地址的问题
文章目录问题:已知:函数调用:递归函数特点:解释:问题:在我们递归调用的时候,调用的都是同一个函数名,那么是对被调函数单独分配空间呢还是说仍然在这个空间中呢???已知:递归过程可以简单理解为自己调用自己的过程函数名代表函数的首地址我们先来了解一下函数调用过程以及递归调用特点:函数调用:调用前一个函数的运行期间调用另一个函数时,在运行被调用函数之前,系统需要完成3件事情:...原创 2020-03-23 22:46:26 · 393 阅读 · 0 评论 -
链表 -- 解释头结点作用
链表中头结点会让插入与删除简化,但至于如何简化,为什么会简化可能不清楚,那我们就来实现一下删除与插入无头结点的代码。无头结点实现插入,删除,遍历输出#include"stdio.h"#include"stdlib.h"typedef struct Node { int data; struct Node* Next;}*PNode;int NoHead_ListInsert(P...原创 2020-03-17 22:39:04 · 576 阅读 · 0 评论 -
辗转相除与折半查找 递归实现
#include"stdio.h"#include"stdlib.h"/*辗转相除法:求两数的最大公约数 A与B数: 用A除以B得到一个余数C,再用 除数 除以 余数 得到新的余数 这个过程不断进行直到得到的余数为0 此时的除数就为最大公约数*/int division(int A, int B) { //参数位置含义: 第一个参数代表被除数 第二个参数代表除数 int ...原创 2020-03-24 13:06:18 · 109 阅读 · 0 评论