- 博客(8)
- 资源 (1)
- 收藏
- 关注
原创 c++简单的链表插入操作
#include<iostream> using namespace std; struct ListNode{ int val; ListNode * next; ListNode(int x): val(x),next(NULL){ } }; int getLength(ListNode *head) { int len = 0; while(head) { len++; head = head->next; } return len; } void prin
2021-09-24 14:19:15 1445
原创 数据结构与算法——c++8种排序算法集合
排序算法,结合大话数据结构使用更佳 不稳定的排序:希尔,堆,快排 #include<iostream> #include<algorithm> #include<vector> using namespace std; class Sort{ public: //1. 冒泡排序法 void Bubble(vector<int> &a) { int len = a.size(); for(int i = 0; i < len; +
2021-09-20 17:33:39 224
原创 数据结构与算法——树的构建和遍历
树的构建方法:通过前序和中序或者中序和后序可以重构二叉树,故也可以通过该方法构建一个二叉树 遍历:前序,中序,后序和层序,都采用迭代方式。 #include<iostream> #include<vector> #include<stack> #include<queue> using namespace std; struct TreeNode{ int val; TreeNode *left; TreeNode *right; TreeNode(i
2021-09-18 21:34:41 517
原创 数据结构与算法(2)——堆排序
思路:利用大顶堆/小顶堆的特性~ 将数组看作完全二叉树的层序遍历; 大顶堆为父结点值>孩子结点,小顶堆为父结点值>孩子结点; 设父结点下标为i(0≤i≤len/2-1,则左右孩子结点的下标为2i+1,2i+2。 则堆排序分为两步: step1:调整数组,初步将所有的父结点调节成大值(大顶堆) step2:进行循环操作,将父结点依次放到尾部(即,大的放到最后,形成了排序),然后对剩余的进行大顶堆调整! #include<iostream> #include<vector>
2021-08-09 22:16:10 108
原创 数据结构与算法——图
图的邻接矩阵存储及其深度遍历与广度遍历实现 原理讲解视频推荐: DFS:懒猫老师的DFS介绍 BFS:懒猫老师的BFS介绍 以上视频结合动图加深理解,个人觉得非常推荐~ 原理讲解文字版 #include<iostream> #include<queue> using namespace std; #define maxsize 100 //邻接矩阵方式实现图 //是否访问过该顶点,故为一维的! 由于递归的不断变化,故要设置成全局变量 int visited[maxsize] =
2021-07-12 22:15:51 91
原创 数据结构与算法——排序算法1
排序算法C++实现(一) 主要实现冒泡排序、简单选择排序、直接插入排序和希尔排序法。前三者的时间复杂度都为O(n2),希尔排序作为插入排序法的一种,其在内部进行分组,使得时间复杂度为O(nlogn)。 运行结果: #include<iostream> #include<vector> #include<algorithm> using namespace std; void exchange(int &a, int &b); void test01(in
2021-07-08 23:28:43 151 1
原创 循环队列的C++实现
循环队列的C++实现 #大话数据结构学习 包括了类定义与调用验证 循环队列用两个指针,一个指向队头,一个指向队尾;队尾负责进队,队头负责出队(如同吸管) 缺陷是吸管的长度固定呀!(所以有下一节的链式队列~ #include <bits/stdc++.h> using namespace std; /*template <class Datatype> struct Queue { int front; int rear; Datatype data; };*/ templat
2021-04-28 15:49:34 252 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人