自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)
  • 问答 (2)
  • 收藏
  • 关注

原创 三十天挑战数据结构(8)KMP算法

上一篇博客里提到,朴素的匹配算法效率太低,因此三位前辈:D.E.Knuth、J.H.Morris和V.R.Pratt发表了一种相对高效的匹配算法,简称KMP算法。 要理解这种算法其实并不难,虽然起初看了无数视频看了许多书籍都没有办法很透彻的理解,但经过一点一点分析,总会有一天将它思考透彻的。 总的来讲,这个算法做到的其实就是将不必要的匹配跳过。 例如主串为:abcababca 子串为:abcabx 这是一个很简单的例子,我们会从第一个开始比较,一直到前五个“abcab”都能匹配成功,但是最后的“x”匹配失败

2020-05-31 17:48:23 165

原创 三十天挑战数据结构(7)串的基本操作与简单匹配

忙完实验又两天,继续学习数据结构。 今天先学串的基本操作,最基础的有:获取长度,复制,连接,打印,简单匹配。 前面几个不用多说,就说说简单匹配吧。 简单匹配是相对于KMP算法而言的,简言之就是从子串的第一个字符开始和主串标记位开始的每一个字符进行对比,如果不完全匹配就将子串移到主串的下一个位置。 这个算法思路清晰,实现容易,但是很容易在遇到极端问题时浪费大量的时间,比如在主串最后才完成匹配这种情况,效率并不是很高。 因此就有了KMP算法,可以更加高效地实现字符串的匹配。于是我准备单独拿一篇博客来写KMP算法

2020-05-29 12:09:15 163

原创 三十天挑战数据结构(6)循环队列的实现

在学习了栈这种先进后出(First in last out,也称FILO)的数据结构之后,我们来学习这种先进先出(First in first out,也称FIFO)的数据结构。 循环队列的储存结构相对链式队列要简单一些,是直接事先分配好一块空间,在有限的空间内进行数据的操作。起初队头指针和队尾指针都指向0位置,为了区别队列满状态,将队列中只剩一个空间时看做满状态。 队列满状态如下图: 具体代码实现: (由于比较简单就不一块一块列了,直接贴代码,注释也比较详细) #include<stdio.h&g

2020-05-25 22:28:19 144

原创 三十天挑战数据结构(5)栈的链式储存结构

在还未料到可能可以系统化按顺序进行数据结构学习时,我就已经将我最最不熟的栈,先给处理了。详见三十天挑战数据结构(1)栈的实现和操作 今天看着书发现它还有一种链式表示方法,感觉和单链表有些相似,不妨也来试试,只针对其最最基础的创建和进栈出栈做点文章。 链式栈结构体: //定义链式栈结构体 typedef struct StackNode{ ElemType data; struct StackNode *next; }StackNode, *LinkStackPtr; typedef str

2020-05-24 14:55:41 175

原创 三十天挑战数据结构(4)线性表的链式储存结构——创建、获取、插入、删除与打印

线性表分为顺序表和链表,其中顺序表就是分配一块空间,将数据按顺序排列,如果需要处理数据,删除或者插入,都会造成其它数据的位置变化,十分不方便且费事。 因此我们引出了链表,不要求每个数据一定要按顺序存放,而是记住他们相邻的数据(位置),从而达到数据的储存效果。 链式表的存储结构图示: 线性表储存结构: typedef struct Node{ ElemType data; struct Node *next; }Node, *LinkList; 建立单链表(头插法与尾插法): //建立单链

2020-05-23 15:59:25 402

原创 三十天挑战数据结构(3)线性表的顺序存储结构——创建、获取、插入、删除与打印

时隔两天的更新,和ddl打的不可开交。 好不容易有点时间了,接着我们的数据结构挑战! 既然要学,就从头开始学。 既然C语言基础不扎实,就从最简单的开始补。 前两期为了当时所需,出现的比较突然,这之后估计会挨着系统化的做出代码总结和学习了!! 于是我们今天来实现最简单的数据结构——线性表的顺序储存结构。 线性表的顺序储存结构图示: 毕竟是最简单的数据结构,就不详述它了,直接贴代码,其中注释很详细。 一共实现了:顺序表的初始化、建立、获取元素、插入元素和删除元素的基本操作。 #include<stdio

2020-05-23 00:58:55 502

原创 三十天挑战数据结构(2)层序建立二叉树、先序输出

先序中序后序建立二叉树都并不难,但是层序反而需要动点脑子,例如对于二叉树: 这样一棵二叉树的层序遍历结果是: 1-2-3-4-null-5-null-6-7-null-8 而利用以上的层序遍历结果作为输入,先序输出为: 1-2-4-6-7-3-5-8(忽略了null) 这种层序遍历输入创建二叉树最开始是在某位博主的文章里学到的(忘了具体是哪位,55…),他的代码的一些指针啊数组啊就没有变动了,但这个博客主要是为了学习,所以事先在此声明一下,侵删。 层序遍历先序输出源代码: #include<stdi

2020-05-19 01:38:13 341

原创 三十天挑战数据结构(1)栈的实现和操作

先三两句说一下我的状况: 大二计算机系学生,大一学了一年基础物理数学,大二上才开始接触计算机程序语言相关知识。高中没搞过信息技术竞赛,没有学过任何少儿编程课… 总而言之就是一个零基础小白 -_- 开始专业课的学习之后一切看似十分正常,没想到关键时刻网课来临,没有老师线下指导、早八习惯性没有效率(懒…),再加上大一上C语言程序与设计老师水了一个学期其实并没有学到啥,造成了半个学期过去了,我的数据结构这门课菜的就像一锅汤… 但是毕竟它是重点,我深深的知道。 不能逃避,只有勇敢地去面对。 虽然链表二叉树图没一个学

2020-05-18 21:15:15 183

学科门类和代码2009(包含一级学科、二级学科)Excel资源

根据GB/T 13745-2009整理的一级学科和二级学科门类的Excel数据,包含各学科名称和代码

2023-02-06

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除