递归的基本概念 什么是递归?递归就是自己调用自己,引用一个经典故事理解: 从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?“从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?‘从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?……’” 故事调用故事本身,层次越来越深…… 使用递归的条件1.问题本身可以分解为子问题,并且与原问题有相同的 2020-09-18 c++ #递归
双向链表简单示例 双向链表与双向链表相比,每个元素都有两个指针分别指向前后两个元素,这意味着双向链表可以双向遍历。 简单例子如下 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767 2020-09-18 c++ #数据结构 #链表 #c++
中缀表达式转后缀表达式 从左向右扫描中缀表达式;访问到操作数,加人后缀表达式;访问到左括号“(“,立即入栈;访问到右括号“)”,栈中操作符依次出栈并加入后缀表达式,直到出现左括号“(”,“(”出栈;访问到除括号之外的其他操作符,当其优先级比栈顶除“(”之外的操作符高时入栈,否则比当前操作符优先级高或者优先级相等的操作符依次出栈。 使用一种不需要括号的表达式的图形表示法,称为表达式树。树使用圆圈代表存储数据的节点,这些节点 2020-09-17 数据结构 #数据结构
栈和队列 1. 栈的简介1.1栈的特点栈(Stack)是一种线性存储结构,它具有如下特点: 栈中的数据元素遵守”先进后出”(First In Last Out)的原则,简称FILO结构。 限定只能在栈顶进行插入和删除操作。 1.2栈的相关概念栈的相关概念: 栈顶与栈底:允许元素插入与删除的一端称为栈顶,另一端称为栈底。 压栈:栈的插入操作,叫做进栈,也称压栈、入栈。 弹栈:栈的删除操作,也叫做出栈。 2020-09-17 数据结构 #数据结构
完整功能单链表 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210 2020-09-17 c++ #数据结构 #链表 #c++
c++使用new和delete来创建和释放动态数组 一、创建并释放一维数组12345678910111213141516171819#include<iostream>using namespace std;int main(){ int n; cin>>n; //分配动态一维数组 int *arr=new int[n]; for(int i=0;i<n;i++) 2020-09-17 c++ #数据结构 #c++
数据结构的基本概念 1.逻辑结构逻辑结构分为四种类型:集合结构,线性结构,树形结构,图形结构。 集合结构数据元素同属一个集合,单个数据元素之间没有任何关系。 线性结构数据元素间是线性排列关系。一对一。 树形结构树形结构中的数据元素所组成图形类似于树状图。一对多。 图形结构数据元素之间是多对多的关系。 2.物理结构(存储结构)物理结构又叫存储结构,分为四种种,顺序存储结构、链式存储结构、索引结构、散列结构。 顺 2020-09-17 数据结构 #数据结构
排序算法总结 1.冒泡排序 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 12345678template<typename T>void bubble_sort(T arr[ 2020-08-20 c++ #数据结构
哈希(Hash)表(散列表) 哈希表定义哈希表是一种根据关键码去寻找值的数据映射结构,最经典的例子就是字典,如果我想要获取“按”字详细信息,我肯定会去根据拼音an去查找拼音索引,在索引列表中找到an,发现它的页码是4。这就是一个键值映射过程,通过关键字key查找对应的值的索引f(key)。其中,关键字就是“按”,f(key)就是哈希函数,f(“按”)=4就是哈希值。 哈希表冲突(散列冲突)但是问题又来了,我们要查的 2020-08-20 c++ #数据结构 #哈希表 #c++
时间复杂度 简介我们往往把一个算法的复杂度分为时间复杂度和空间复杂度,时间复杂度对应算法执行所需要的时间,空间复杂度对应所需要的内存,相对来讲空间代价肯定是比时间代价更小,所以算法的时间复杂度成为评价算法优劣的最重要的指标之一。 引用百度百科的介绍:“一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f (n) 2020-08-20 数据结构 #数据结构