![](https://img-blog.csdnimg.cn/20190927151124774.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
previous_数据结构与算法
这个专栏用于发布数据结构与算法相关的博客。
TRXCX
这个作者很懒,什么都没留下…
展开
-
SCAU 1109 综合性实验
1109综合实验:文件操作与字符处理时间限制:4000MS 代码长度限制:10KB提交次数:6265 通过次数:1646题型: 填空题语言: GCCDescription在当前目录中存在文件名为"case1.in"(其中case后为数字1,不是字母l,写错提交后会判错)的文本文件,其内容为一篇英文文章(以EOF作为结束标志)。现要求读取该文本文件内容,统计文章中每个单词出现的次数,并输出出现次数最多的前5个单词及其出现次数(按出现次数由多到少的顺序输出,次数相同时按字典...原创 2021-11-26 14:59:25 · 830 阅读 · 0 评论 -
线索二叉树
对于一般的二叉树,若它有n个链表,必有n+1个空链域(也就是为NULL的指针,即空指针)。线索二叉树充分利用了这空指针,使得节点可以在没有左孩子或右孩子时,使得左孩子指针指向节点前驱,右孩子指针指向节点后继。对于同一个节点,它的前驱和后继与遍历方式有关,举例说明:中序遍历时根节点的前驱是遍历左子树时最后访问到的节点,而在后序遍历时前驱可能是左孩子也可能是右孩子,二者显然是不同的,同一个节点的后继也类似,因遍历方式不同而不同。以下是线索二叉树中序遍历的代码实现。#include <stdi原创 2021-06-28 08:53:06 · 413 阅读 · 1 评论 -
SCAU 8610、SCAU 8621、SCAU8622 顺序查找、折半查找、哈希查找
关于顺序查找,如果设置一个“哨兵”,那么每次比较时不用判断i是否越界,这样可以减少查找所需的平均时间。关于折半查找,需要注意两点:①while循环的条件是low<=high,因为key可能出现在low==mid时②结束while循环时要返回0表示表中不存在待查元素关于哈希查找:如果想要在源代码上直接修改,可以参考这篇文章:(1条消息) 8622 哈希查找 SCAU 华南农业大学 数据结构实验(个人笔记 勿喷)_木杏梦的博客-CSDN博客[作者:木杏梦]这篇文章给出了修改源码的简单方原创 2021-06-28 17:54:05 · 620 阅读 · 0 评论 -
SCAU8609 哈夫曼树
这道题的原题代码实在过于混乱,且存在诸多无用的输出和格式错误。若读者想要在原题基础上完成,不妨参考这篇文章:(1条消息) SCAU 8609 哈夫曼树_Maoxim的博客-CSDN博客[作者:小汤汤汤汤]这篇文章直接给出了一份完整的代码实现方式,且代码对可能的问题提供了充分的注释。若读者对哈夫曼树的构造和编码仍有疑问,不妨在评论区留下你的问题。#include <stdio.h>#include <string.h>typedef struct //哈夫曼树.原创 2021-06-28 16:03:23 · 796 阅读 · 0 评论 -
SCAU8608 实现二叉排序树的各种算法(综合性实验)
这篇文章给出了这道题的代码实现方式。代码对可能的问题给出了详尽的注释,如果读者还有不明白的地方,欢迎在评论区留下你的问题。#include <stdio.h>#define ElemType int //二叉排序树存储数据Data类型为ElemType:int#define Status int //函数返回状态#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0typedef struct BiTNode原创 2021-06-27 22:00:41 · 1797 阅读 · 1 评论 -
SCAU 8606、SCAU 17121、SCAU 18924、SCAU 18724、SCAU 18923
#include <stdio.h>#include <stdlib.h>#define ElemType char#define Status int#define OK 1#define ERROR 0typedef struct BiTNode{ ElemType data; struct BiTNode *lchild, *rchild;} BiTNode, *BiTree;Status CreateBiTree(BiTree &.原创 2021-06-27 17:41:32 · 339 阅读 · 0 评论 -
SCAU18769 不完整的排序
这道题关注一下提示就知道大概思路了,但仍有两个地方需要注意:①每完成一次输入就给出相应输出②每一次都分配一个数组空间,而不能在for循环外定义一个空间足够大的数组反复使用。#include <stdio.h>void Reorder(int Num[], int length){ if (length <= 1) return; int low = 0, high = length - 1; while (low < hig原创 2021-06-26 19:37:01 · 323 阅读 · 0 评论 -
SCAU18722 稀疏矩阵的运算
这道题目要求对稀疏矩阵做快速转置运算。因此我们首先需要了解快速转置和普通转置的区别。这两种转置方式的前两个步骤都是:输入;行列互换。关键在于第三步:行列互换后如何再按“行优先”排序。普通转置方法可以在这里通过排序的方法,按照行列互换后“行优先”,行相同时列优先这种规则对行列互换后的三元组表排序,之后再输出即可。但这种方法的缺陷在于即使是使用快排、堆排这种本身已经很快的排序算法,对这个问题处理的时间复杂度依然来到了nlogn,OJ不认可这样的时间复杂度,因此使用这种排序方法得到的代码,结果上是对的原创 2021-06-26 16:47:58 · 755 阅读 · 1 评论 -
一篇文章,讲明白KMP算法的前世今生 SCAU8591、SCAU8592
在这篇文章中,我将试图用尽可能简洁易懂的语言,告诉你什么是KMP算法。PART 1我们面对的问题:我们有两个字符串,其中一个较长,称为主串S,另一个较短,称为模式串T。我们想要知道,主串是否存在与模式串相等的子串,如果存在,那么我们想要得到该子串第一个字符在S中的位置。为了解决这一问题,我们需要一个算法。在这个算法中,当我们提供S和T后:如果存在满足条件的子串,算法会给出相应的位置;否则返回0表示不存在这样的子串。通常情况下我们还会给出一个常量pos,它表示从S中开始查找“子串”的起始位置。我们原创 2021-06-23 17:50:59 · 324 阅读 · 0 评论 -
SCAU18937 阿克曼(Ackmann)函数
#include <stdio.h>int Ackmann(int m,int n){ if(!m) return n+1; else if(m>0&&!n) return Ackmann(m-1,1); else return Ackmann(m-1,Ackmann(m,n-1));}int main(){ int m,n; scanf("%d %d",&m,&n); printf("%d",.原创 2021-06-22 19:03:56 · 312 阅读 · 0 评论 -
SCAU8584、SCAU8590 循环队列的基本操作
这篇文章介绍了一般队列的“假溢出”问题,给出了循环队列的基本操作方法以及SCAU8584和SCAU8590的解决方案。原创 2021-06-22 18:23:40 · 666 阅读 · 0 评论 -
SCAU8583、SCAU8585、SCAU8586、SCAU8587、SCAU8588、SCAU18938 栈的基本操作
栈:先进后出的线性表这篇文章给出了栈的基本操作,包括:InitStack、DestroyStack、ClearStack、StackEmpty、StackLength原创 2021-06-21 22:29:16 · 571 阅读 · 0 评论 -
二叉树坡度
根据给定的数据依次插入节点,构建相应的二叉排序树T(不含值重复的节点),并编写算法计算整棵树T的坡度。一棵树的节点的坡度定义为该节点左子树的节点之和与右子树节点之和的差的绝对值。如果一个节点没有左子树,则其左子树的节点之和为0;没有右子树的话也是一样。空节点的坡度是0。整棵树的坡度就是其所有节点的坡度之和。示例1:解释: 节点 1 的坡度:|0-0| = 0(没有子节点) 节点 3 的坡度:|0-0| = 0(没有子节点) 节点 2 的坡度:|1-3| = 2(左子树就是左子节点,..原创 2021-06-21 14:40:59 · 135 阅读 · 0 评论 -
SCAU8579、SCAU8580、SCAU8581 链式表的基本操作
这篇文章是一份纯代码分享。代码包含了线性表的链式实现时的基本函数,包括:CreateLinkList、DestroyLinkList、ClearLinkList原创 2021-06-21 11:49:34 · 390 阅读 · 0 评论 -
顺序表的基本操作 SCAU8576、SCAU8577、SCAU8578
//此项目功能:完成顺序表的基本操作及OJ给出的三道题:8576、8577、8578#include <stdio.h>#include <malloc.h>#define ElemType int#define Status int#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0#define MAXSIZE 100typedef struct SqList //定义顺序表结构{ Ele...原创 2021-06-20 23:18:32 · 722 阅读 · 0 评论