数据结构
文章平均质量分 88
五毛变向.
大二菜鸡 看摆烂代码 品摆烂人生。
展开
-
数据结构 严薇敏 堆 的实现及其使用方法详解
1.堆的概念将一个关键码的集合K = {k0 , k1,k2,k3……kn-1}把他所有元素按完全二叉树的存储方式放在一个一维数组中,并且满足双亲节点大于孩子节点,或者双亲节点小于孩子节点将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。1.2堆的性质堆中某个节点的值总是不大于或不小于其父节点的值; 堆总是一棵完全二叉树2.堆的实现及其接口详解2.1Heap.h#pragma once#include <stdio.h>#include &l原创 2022-04-20 15:46:25 · 1645 阅读 · 19 评论 -
数据结构 严薇敏 树 及 二叉树 的概念以及常用知识点
1.树的概念以及结构1.1树的概念树是一种非线性的结构它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。有一个特殊的节点,称为根节点,根节点没有前驱节点。除根节点外,其余结点被分成M(M>0)个互不相交的集合T1、T2、……、Tm,其中每一个集合Ti(1<= i<= m)又是一棵结构与树类似的子树。每棵子树的根结点有且只有一个前驱,可以有0个或多个后继因此,树是递归定义的树形结构中,子原创 2022-04-19 13:17:26 · 495 阅读 · 7 评论 -
数据结构 严薇敏 队列 的实现及其使用方法详解
目录1.队列1.1队列的概念及结构1.2队列的实现1.3接口以及实现Queue.hQueue.c申请一个队列的节点初始化队列入队列出队列查找队头元素查找队尾元素获取队列长度判断是否为空队列队列的销毁测试用例1.队列1.1队列的概念及结构队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(First In First Out) 入队列:进行插入操作的一端称为队尾 出队列:进行删.原创 2022-04-02 15:27:10 · 1694 阅读 · 4 评论 -
数据结构 严薇敏 栈 的实现及其使用方法详解
1.栈1.1栈的概念及结构栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。形象一点就是吃进去吐出来,只是在一端进行操作。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据也在栈顶。1.2栈的实现栈的话用动态顺序表实现就是比较简单的,当然也可用单链表实现,但是注意一个问题,栈是不可以被遍历的,我.原创 2022-04-02 00:29:28 · 222 阅读 · 23 评论 -
数据结构 严薇敏 串 详解KMP算法(KMP实现strstr函数)
KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt提出的,因此人们称它为克努特—莫里斯—普拉特操作(简称KMP算法)。KMP算法的核心是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。具体实现就是通过一个next()函数实现,函数本身包含了模式串的局部匹配信息。 来自百度百科...原创 2022-03-21 22:53:41 · 1484 阅读 · 10 评论 -
数据结构 严薇敏 串 详解BF算法(BF实现strstr函数)
BF算法,即暴力(Brute Force)算法,是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串T的第一个字符进行匹配,若相等,则继续比较S的第二个字符和 T的第二个字符;若不相等,则比较S的第二个字符和T的第一个字符,依次比较下去,直到得出最后的匹配结果。BF算法是一种蛮力算法。 ...原创 2022-03-20 21:15:14 · 358 阅读 · 16 评论 -
数据结构 严薇敏 单链表(无头结点)的实现(增 删 改 查)及其使用方法详解
1.与顺序表的对比书接上回!我们修炼了顺序表的内功,但是在很多使用场景,他都很受限制!缺点:插入删除的时候,还记得吗!我们都要搬运元素到指定位置,时间复杂度是O(N). 你的顺序表容量是提前给的,扩容的时候还要拷贝数据,开辟新空间,释放旧空间,会有很大的性能消耗。 增容一般是呈2倍的增长,势必会有一定的空间浪费。例如当前容量为100,满了以后增容到200,我们再继续插入了5个数据,后面没有数据插入了,那么就浪费了95个数据空间。若每次扩容扩少一点,则会导致频繁扩容,频繁扩容同样也会有性能消耗原创 2022-03-19 14:51:52 · 1678 阅读 · 12 评论 -
数据结构 严薇敏 顺序表的实现(增 删 改)及其使用方法详解
1.线性表概念:线性表是n个具有相同特征性的数据元素的有限序列,线性表是一种在实际中广泛使用的数据结构,每个元素都有唯一的前去和唯一的后继,前一个元素没有前驱只有后继,最后一个元素没有后继只有前驱,常见的线性表:顺序表、链表、栈、队列、字符串。数组不等于线性表,数组只是把元素存储起来了!可以增加一些增删改的方法!2.顺序表2.1概念及结构顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。顺序表一般可以分为:1...原创 2022-03-13 20:10:26 · 3091 阅读 · 14 评论 -
数据结构 时间复杂度和空间复杂度
1.时间复杂度概念:算法中的基本操作的执行次数为时间复杂度(基本语句关于问题规模N总的执行次数的一个数学函数)1.1大O的渐进表示法用常数1取代运行时间中的所有加法常数 O(1) 再修改后的运行次数函数中只保留最高阶 如果最高阶项存在且不是1,则去除与这个项目相乘的常数。得到的结果就是大O阶#include<stdio.h>void Func1(int N){ int count = 0; for (int i = 0; i < N; ++i) { ..原创 2022-03-11 21:20:37 · 2502 阅读 · 10 评论