数据结构与算法基础(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 · 429 阅读 · 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 · 372 阅读 · 0 评论 -
顺序循环队列(数组,c++)
开始存----------------首次存满-------------------删除后继续添加未存满第一种情况存满-----第二种情况存满-----加倍空间空间加倍原创 2020-06-20 08:47:46 · 195 阅读 · 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 · 331 阅读 · 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 · 346 阅读 · 0 评论 -
数据结构与算法(C++) -- adjacency matrix
#include <iostream>using namespace std;// 用邻接矩阵表示图, 顶点 边// 邻接矩阵为对称阵(两个定点相互是相连的), 对角元素为0(顶点与自己的边用0表示) // 简单,但是有一半的空间浪费,并且稀疏0很多.# define MAXVERTEX_NUMS 20// 顶点的类型,可以不用这么绕弯子,也没啥用class Ve...原创 2020-06-20 08:53:38 · 524 阅读 · 0 评论 -
数据结构与算法(C++) B树 为磁盘或其他直接存储辅助存储设备而设计的一种平衡查找树 1一个节点是一个数据块 2每个节点的子节点个数是千百个 3高度只有几层(2-3-4))
用于硬盘、U盘、操作系统、数据库等文件系统。B树一般几千个分叉,小的也有几百个分叉。B树层数一般不多,几层左右(保证读盘次数尽可能少),每个节点表示一个数据块,最小数据块大小为4K(跟硬盘结构有关)。从硬盘中读取一部分数据到内存,然后在内存中用红黑树操作。...原创 2019-08-28 08:48:55 · 146 阅读 · 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 · 161 阅读 · 0 评论 -
数据结构与算法(C++)最简单的二叉树,创建,前中后层序遍历
这是代码中那个简单的二叉树:code如下:/* 数组 缺点: 插入 删除数据很慢,要依次移动. 优点: 二分查找很快 链表 缺点: 无法二分查找,没有下标 优点: 插入删除速度很快 树 结合了数组和链表的优点, 插入删除很快, 二分查找很快 一个叉的树是链表*/#include <iostream>#inc...原创 2020-06-20 08:54:23 · 227 阅读 · 0 评论 -
基数排序,非负数 快排
#include <iostream>#include <tuple>#include <list>using namespace std;// 基数排序 简单 速度快 多一倍存储空间// 基数: 如 10进制的基数为10 8进制的基数为8 对26个字母排序基数就是26 等等// 最低位优先, 基数 == 链表的个数// 原理:// ...原创 2020-06-20 08:54:29 · 221 阅读 · 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 · 404 阅读 · 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 · 444 阅读 · 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 · 529 阅读 · 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 · 298 阅读 · 0 评论