
数据结构与算法基础(c++实现)
巴德鸟
这个作者很懒,什么都没留下…
展开
-
数据结构与算法(C++) 单向循环链表loop_list 需要空节点 head指向它头插和尾插 Makefile 迭代器重载*和++
#include<iostream> using namespace std; template<class T> class LoopList; template<class T> class Node { friend class LoopList<T>; public: ~Node() { data.~T(); }; /...原创 2021-05-15 09:41:30 · 460 阅读 · 0 评论 -
数据结构与算法(C++) 双向链表 不循环 有head和tail节点指针,迭代器,
代码是双向不循环的链表,有head和tail节点指针,迭代器, #include<iostream> using namespace std; // #include<list> // 双向非循环链表 // 包含了Node class、iterator class、List class // 节点 包含了 data数据 prev next指针 // 迭代器 ...原创 2021-05-15 09:40:59 · 401 阅读 · 0 评论 -
顺序循环队列(数组,c++)
开始存----------------首次存满-------------------删除后继续添加未存满 第一种情况存满-----第二种情况存满-----加倍空间 空间加倍原创 2020-06-20 08:47:46 · 209 阅读 · 0 评论 -
数据结构与算法(C++) -- 图的DFS 和 BFS based on adjMat queue-BFS stack-DFS
先从A->B->E->C,再返回C->E->B->A->D,但是要跳过搜索过的顶点,最后输出A->B->E->C->D。原创 2020-06-20 08:49:58 · 349 阅读 · 0 评论 -
数据结构与算法(C++) -- 邻接表(inplemention with array and list)
用数组和链表来实现. #include <iostream> #include <list> using namespace std; template<typename T> class Graph; // 每个顶点 连接的其他顶点用链表表示 // 在实现邻接表 的时候可以把 表(数组实现)和连接关系(链表实现)分开 template<typena...原创 2020-06-20 08:53:32 · 384 阅读 · 0 评论 -
数据结构与算法(C++) -- adjacency matrix
#include <iostream> using namespace std; // 用邻接矩阵表示图, 顶点 边 // 邻接矩阵为对称阵(两个定点相互是相连的), 对角元素为0(顶点与自己的边用0表示) // 简单,但是有一半的空间浪费,并且稀疏0很多. # define MAXVERTEX_NUMS 20 // 顶点的类型,可以不用这么绕弯子,也没啥用 class Ve...原创 2020-06-20 08:53:38 · 558 阅读 · 0 评论 -
数据结构与算法(C++) B树 为磁盘或其他直接存储辅助存储设备而设计的一种平衡查找树 1一个节点是一个数据块 2每个节点的子节点个数是千百个 3高度只有几层(2-3-4))
用于硬盘、U盘、操作系统、数据库等文件系统。 B树一般几千个分叉,小的也有几百个分叉。 B树层数一般不多,几层左右(保证读盘次数尽可能少),每个节点表示一个数据块,最小数据块大小为4K(跟硬盘结构有关)。从硬盘中读取一部分数据到内存,然后在内存中用红黑树操作。 ...原创 2019-08-28 08:48:55 · 162 阅读 · 0 评论 -
数据结构与算法(C++) 二叉查找树, 插入 查找 显示位置和数据 中序遍历
binary_search_tree.h #ifndef __BINART_SEARCH_H #define __BINARY_SEARCH_H #include <iostream> template<class T> class Node; template<class T> class BST; enum Boolean { FALSE, TRUE ...原创 2020-06-20 08:54:18 · 171 阅读 · 0 评论 -
数据结构与算法(C++)最简单的二叉树,创建,前中后层序遍历
这是代码中那个简单的二叉树: code如下: /* 数组 缺点: 插入 删除数据很慢,要依次移动. 优点: 二分查找很快 链表 缺点: 无法二分查找,没有下标 优点: 插入删除速度很快 树 结合了数组和链表的优点, 插入删除很快, 二分查找很快 一个叉的树是链表 */ #include <iostream> #inc...原创 2020-06-20 08:54:23 · 246 阅读 · 0 评论 -
基数排序,非负数 快排
#include <iostream> #include <tuple> #include <list> using namespace std; // 基数排序 简单 速度快 多一倍存储空间 // 基数: 如 10进制的基数为10 8进制的基数为8 对26个字母排序基数就是26 等等 // 最低位优先, 基数 == 链表的个数 // 原理: // ...原创 2020-06-20 08:54:29 · 249 阅读 · 0 评论 -
数据结构与算法(C++) hash映射 线性映射 字符串hash值计算 库里的hash集映射使用方法
LinearMap.h #ifndef __LINEAR_MAP_H #define __LINEAR_MAP_H #include <vector> // 用vector做的一个简单的map, 线性的, 实际没什么用 template<class Key, class Value> class LinearMap { public: LinearMap(con...原创 2020-06-20 08:49:46 · 431 阅读 · 0 评论 -
数据结构与算法(C++)堆,完全二叉树 因为连续所以数组实现 push放入最后向上渗透 pop把最后的放到顶然后向下渗透 放入堆然后取出即可完成排序
完全二叉树:依次排列,1-2-3-4-5-6-7-8-9-10-11-12, 中间都存在节点 不完全二叉树: 依次排列,1-2-3-4-5-6-7-8- * -10-11-12, 中间第9个节点缺失 完全二叉树可以用数组来完成,按照节点顺序依次存储在数组中。 堆分为大顶堆和小顶堆两种,不分左右子节点,只要都>或<父节点就行 添加新节点:先把节点插入到最后,然后向上依次比较,满足则...原创 2020-06-20 08:49:51 · 469 阅读 · 0 评论 -
数据结构c++ 字符全排列(递归)
代码内容来自互联网视频 #include <iostream> using namespace std; template<class T> inline void swap1(T& a, T& b) { T t = a; a = b; b = t; } // "abc"的排列组合 void permutations(char ...原创 2020-06-20 08:52:12 · 568 阅读 · 0 评论 -
删除数组中的重复项,已排序和未排序两种情况(c++)
删除数组中的重复项(c++) 分两种情况: 1. 数组已排序 2. 数组没有排序 1.数组已排序 // 已排序的列,去重复. ***已排序列 只需考虑 前后两个数是否重复*** void removeSortedDuplicates(vector<int>& nums) { for(int i=1; i<nums.size(); i++) { ...原创 2019-07-29 10:57:54 · 316 阅读 · 0 评论