数据结构
文章平均质量分 64
数据结构
呆萌宝儿姐
CSDN专家博主、阿里云开发者社区专家博主、51CTO社区专家博主、360书馆认证博主、知乎掘金B站等平台受邀作者。
如遇开发、程序等需求,博客首页下拉加入公众号,私信博主
展开
-
时间复杂度吐血总结
不过,时间复杂度要比空间复杂度更容易产生问题,因此算法研究的主要也是时间复杂度,不特别说明的情况下,复杂度就是指时间复杂度。大O表示法O(f(n))中的f(n)的值可以为1、n、logn、n²等,因此我们可以将O(1)、O(n)、O(logn)、O(n²)分别可以称为常数阶、线性阶、对数阶和平方阶,那么如何推导出f(n)的值呢?当i=0时,内循环执行了n次;,分裂N轮后有2。上面算法的运行的次数的函数为f(n)=3,根据推导大O阶的规则1,我们需要将常数3改为1,则这个算法的时间复杂度为O(1)。.....原创 2022-07-21 17:09:34 · 2070 阅读 · 0 评论 -
红黑树规则详解(图文)
红黑树是一种自平衡的二叉查找树,是计算机科学中用到的一种数据结构。1972年出现,当时被称之为平衡二叉B树。后来,1978年被修改为如今的"红黑树"。它是一种特殊的二叉查找树,红黑树的每一个节点上都有存储位表示节点的颜色,每一个节点可以是红或者黑;红黑树不是高度平衡的,它的平衡是通过"红黑规则"进行实现的。...原创 2022-07-17 15:46:52 · 1705 阅读 · 0 评论 -
C语言学生信息管理系统链表实现
文章目录效果图全部源代码效果图全部源代码#include<stdio.h>#include<string.h>#include<stdlib.h>struct Student { //通过结构体输入学生信息 long num; char name[20]; float score[3]; //float aver; struct Studen原创 2020-12-16 08:15:33 · 5984 阅读 · 1 评论 -
C++优先队列(priority_queue)用法详解
文章目录priority_queue优先队列介绍模板 参数priority_queue成员函数大顶堆与小顶堆大顶堆(降序)小顶堆(升序)注意事项代码案例priority_queue对于这个模板类priority_queue,它是STL所提供的一个非常有效的容器。作为队列的一个延伸,优先队列包含在头文件 <queue> 中。优先队列介绍优先队列是一种比较重要的数据结构,它是有二项队列编写而成的,可以以O(log n) 的效率查找一个队列中的最大值或者最小值,其中是最大值还是最小值是根据创原创 2020-11-16 09:11:37 · 8308 阅读 · 0 评论 -
数据结构——二叉树的原理与代码应用
本文下月再整理 这月凑够40篇原创 2020-10-30 23:25:29 · 4604 阅读 · 3 评论 -
数据结构——哈希表(散列)原理与代码应用
文章目录什么是哈希表?Hash的应用Hash复杂度散列表的查找步骤散列函数(哈希函数)——散列地址哈希表优缺点优点:缺点:散列的三种方法1、除法散列法2、平方散列法3、斐波那契(Fibonacci)散列法散列冲突的解决方案:扩展代码应用什么是哈希表?哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。记录的存储位置=f(关键原创 2020-10-24 08:54:32 · 5350 阅读 · 1 评论 -
数据结构——跳表的原理与代码应用
SkipList的基本原理一、为什么选择跳表?二、定义分配新结点回收结点初始化查找插入删除三、全部代码示例一、为什么选择跳表?目前经常使用的平衡数据结构有:B树,红黑树,AVL树,Splay Tree, Treep等。想象一下,给你一张草稿纸,一只笔,一个编辑器,你能立即实现一颗红黑树,或者AVL树出来吗?很难吧,这需要时间,要考虑很多细节,要参考一堆算法与数据结构之类的树,还要参考网上的代码,相当麻烦。用跳表吧,跳表是一种随机化的数据结构,目前开源软件 Redis 和 LevelDB 都有用到它,原创 2020-10-24 08:20:30 · 4067 阅读 · 1 评论 -
数据结构——单链表的定义和实现
文章目录单链表的定义单链表的实现单链表的定义单链表的实现原创 2020-09-23 19:25:18 · 7052 阅读 · 0 评论 -
数据结构——线性表的链式表示和实现(链表总览)
线性表的链式表示和实现链式存储结构链式存储结构结点在存储器中的位置是任意的,即逻辑上相邻的数据元素在物理上不一定相邻线性表的链式表示又称为非顺序映像或链式映像。如何实现?通过指针来实现 单链表的存储映像free (a) 可利用存储空间a0 a2 a1 a3 free first(b) 经过一段运行后的单链表结构例如:画出26个英文字母表的链式存储结构链式存储结构:逻辑结构:( a, b, … ,y, z)head a b …… z /各结点由两个域组成:数据域:存储元素数值数原创 2020-09-22 22:50:14 · 4723 阅读 · 0 评论 -
数据结构——线性表的顺序表示与实现(顺序表)
文章目录线性结构的定义:线性表一、线性表的定义和特点例1 分析26 个英文字母组成的英文表例2 分析学生情况登记表顺序存储结构存在问题二、线性表的类型定义线性结构的定义:若结构是非空有限集,则有且仅有一个开始结点和一个终端结点,并且所有结点都最多只有一个直接前趋和一个直接后继。可表示为:(a1 , a2 , ……, an)线性表线性结构表达式:(a1 , a2 , ……, an)线性结构的特点:① 只有一个首结点和尾结点;② 除首尾结点外,其他结点只有一个直接前驱原创 2020-09-22 21:44:33 · 7715 阅读 · 2 评论 -
数据结构与算法设计基础
文章目录1 数据结构的研究内容数据结构的研究内容为:数据结构课程的形成和发展:数据结构地位2 基本概念和术语基本概念数据结构的两个层次:逻辑结构划分方法一:划分方法二:存储结构(物理结构)存储结构分为:3 抽象数据类型的表示与实现数据类型抽象数据类型(ADT: Abstract Data Types)4 算法与算法分析1 数据结构的研究内容数据结构的研究内容为:研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作。数据结构课程的形成和发展:形成阶段:60年代初期,“数据结构原创 2020-09-18 21:44:33 · 4786 阅读 · 0 评论 -
C++栈对象,堆对象,静态对象的理解
栈对象的优势是在适当的时候自动生成,又在适当的时候自动销毁,不需要程序员操心;而且栈对象的创建速度一般较堆对象快,因为分配堆对象时,会调用operator new操作,operator new会采用某种内存空间搜索算法,而该搜索过程可能是很费时间的,产生栈对象则没有这么麻烦,它仅仅需要移动栈顶指针就可以了。但是要注意的是,通常栈空间容量比较小,一般是1MB~2MB,所以体积比较大的对象不适合在栈中分配。特别要注意递归函数中最好不要使用栈对象,因为随着递归调用深度的增加,所需的栈空间也会线性增加,当所需栈空原创 2020-06-19 22:25:49 · 4626 阅读 · 0 评论 -
C++ list列表删除匹配元素(erase)
匹配中间一片元素进行删除#include <list>#include <iostream>#include <iterator>using namespace std;int main( ){ list<int> c{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; for (auto &i : c) { cout << i << " "; } cout原创 2020-05-11 09:17:41 · 6729 阅读 · 0 评论 -
C++顺序表14种操作的实现
C++顺序表的实现// 顺序表.cpp: 定义控制台应用程序的入口点。//Author:kgvito YinZongYao//Date: 2017.12.27 #include<iostream>using namespace std; #define MAXSIZE 3#define Node ElemType#define ERROR 0typedef int...原创 2020-04-29 14:34:11 · 3877 阅读 · 0 评论 -
二叉树三种遍历(动态图+代码深入理解)
文章目录一、图示理解(图片是一位前辈所留,在此感谢)1、先序遍历2、中序遍历3、后序遍历4、层序遍历二、深入理解三种遍历让我们来理解一下绕着外围跑一整圈的真正含义是:遍历所有结点时,都先往左孩子走,再往右孩子走。下面做一个实例吧三、代码实现加以理解以下是C语言全部代码实现下面是同样的例子用c++实现,大家可以参考一下一、图示理解(图片是一位前辈所留,在此感谢)1、先序遍历先序遍历可以想象成,...原创 2020-04-29 13:10:07 · 34809 阅读 · 54 评论 -
C++迭代器 iterator详解
要访问顺序容器和关联容器中的元素,需要通过“迭代器(iterator)”进行。迭代器是一个变量,相当于容器和操纵容器的算法之间的中介。迭代器可以指向容器中的某个元素,通过迭代器就可以读写它指向的元素。从这一点上看,迭代器和指针类似。迭代器按照定义方式分成以下四种。正向迭代器,定义方法如下:容器类名::iterator 迭代器名;常量正向迭代器,定义方法如下:容器类名::cons...原创 2020-04-05 19:31:26 · 7980 阅读 · 0 评论 -
Vector模板类的使用
1.vector容器vetcor顾名思义就是一个向量的容器,该容器中的每个元素都属于同一个类型,有点类似于数组,vetor容器与数组的不同之处就在于,它具有“动态”的属性,举例来说,如果定义了一个vector容量为10,当你添加第十一个元素时,他会自己找一篇新的足够大领土(内存),然后搬家(把旧址复制过去)。而数组同志显然就是比较死板,在定义时有多大,实际也就有多大。vector容器的常规操作有...原创 2020-03-30 10:21:31 · 4113 阅读 · 0 评论 -
数据结构项目—— 用顺序表制作图书管理系统
《图书信息管理系统》的制作:例:全部代码如下(各部分已注释):#include "pch.h"#include<string>#include<fstream>#include <iomanip>#include <iostream>using namespace std;#define MAXSIZE 100struct...原创 2020-02-13 19:58:55 · 7710 阅读 · 1 评论 -
数据结构项目——单向链表
使用单向链表(增加,删除,查询,修改)代码如下:#include "pch.h"#include<string>#include <iostream>using namespace std;struct LNode{ int data;// 数据域 LNode *next; // 指针域};//新建链表void NewList(LNode *...原创 2020-02-13 19:54:55 · 4002 阅读 · 0 评论 -
数据结构项目——使用循环链表实现约瑟夫环(循环和双向链表实现)
已知有5个人围坐在一张圆桌的周围,从编号为3的人开始顺时针数数,数到2的那个人出列淘汰,然后从出列的下个一人继续数,依次循环,直到只剩下最后一个人。(使用循环链表实现约瑟夫环)代码如下:#include "pch.h"#include<string>#include<fstream>#include<Windows.h>#include <i...原创 2020-02-13 19:53:21 · 4144 阅读 · 0 评论 -
数据结构项目——顺序栈与链栈
实现顺序栈和链栈的、栈的初始化、入栈、出栈、获取栈顶元素功等功能。顺序栈代码如下:#include "pch.h"#include <iostream>#include<Windows.h>#include<string>using namespace std;#define OK 1#define ERROR 0#define OVE...原创 2020-02-13 19:49:33 · 3846 阅读 · 0 评论 -
数据结构项目——循环队列与链队列
循环队列代码如下:#include "pch.h"#include <iostream>using namespace std;#define MAXSIZE 5struct SqQueue{ char* Base; int front; int rear;};//初始化循环队列int initqueue(SqQueue &q){ q.Bas...原创 2020-02-13 19:18:10 · 3813 阅读 · 0 评论 -
数据结构项目——二叉树代码实现
案例分析:写出下面二叉树的先、中、后序遍历输出的结果:注:先自己推算,然后用程序验算。先序遍历的结果:A F H D C B J G E I K中序遍历的结果:D H C F J B G A I E K后序遍历的结果:D C H J G B F I K E A代码如下:#include "pch.h"#include &...原创 2020-02-13 19:14:26 · 3970 阅读 · 0 评论 -
数据结构——线索化二叉树和哈夫曼树介绍与代码分析
线索化二叉树和哈夫曼树基础知识介绍与代码分析一、基础知识介绍二、代码分析:线索二叉树(采用中序遍历)#include "pch.h"#include <iostream>using namespace std;//定义线索二叉树typedef struct Tree{ int data, LTag, RTag; //定义数据域与标记域 Tre...原创 2020-02-13 19:10:21 · 4382 阅读 · 1 评论 -
数据结构——数据结构算法之《图》
完全图:任意两个点都有一条边相连。原创 2020-02-13 19:01:45 · 4352 阅读 · 1 评论 -
C++数据结构——数据结构的查找与排序 (折半查找 、哈希查找 、直接插入排序 、冒泡排序 、快速排序)
代码如下:(包括五种,自己可以逐个测试)//折半查找//查找标记//统计查找次数low = 0;count++;cout原创 2020-02-13 18:47:56 · 4674 阅读 · 1 评论 -
C++学习之路——名字空间与模板
例题:把课程当中的函数模板与类模板两个程序自己写一遍并写好注释。代码如下:#include "pch.h"#include<vector>#include<string>#include <iostream>using namespace std;//模板类template<class T> class Stack{publ...原创 2020-02-12 20:43:21 · 3853 阅读 · 0 评论