![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
哟米 2000
这个作者很懒,什么都没留下…
展开
-
【数据结构】Floyd算法——多对点之间的最短路径
void printPath(int u, int v, int path[][MAX]){ if (path[u][v] == -1){ cout << "<" << u << "," << v << ">"; }else{ int mid = path[u][v]; printPath(u, mid, path); printPath(mid, v,..原创 2022-03-06 18:26:33 · 1179 阅读 · 0 评论 -
【数据结构】C++ 中缀表达式转后缀表达式求值 代码实现1.0
#include <iostream>#include <stack>#include <sstream> using namespace std;void calculate(string s);int prio(char op);bool trans(string &str, string & str1);void s2i(string str, int &num);//返回符号优先级 int prio(char op).原创 2021-04-15 13:10:35 · 182 阅读 · 0 评论 -
【数据结构】C++ 后缀表达式求值 代码实现
#include <iostream>#include <stack>#include <sstream>using namespace std;void s2i(string str, int &num){ stringstream ss; ss << str; ss >> num;}bool calculate(string s){ stack<char> ops; stack<int&g.原创 2021-04-15 13:02:59 · 1416 阅读 · 0 评论 -
【数据结构】C++ 中缀表达式转后缀表达式 代码实现
中缀表达式转后缀表达式#include <iostream>#include <stack>using namespace std;//返回符号优先级 int prio(char op){ int prio; if(op == '*' || op == '/'){ prio = 2; } if(op == '+' || op == '-'){ prio = 1; } if(op == '('){ prio = 0; } return pr.原创 2021-04-15 12:31:58 · 586 阅读 · 0 评论 -
数据结构之练习题 ——哈利·波特的考试
题目哈利·波特要考试了,他需要你的帮助。这门课学的是用魔咒将一种动物变成另一种动物的本事。例如将猫变成老鼠的魔咒是haha,将老鼠变成鱼的魔咒是hehe等等。反方向变化的魔咒就是简单地将原来的魔咒倒过来念,例如ahah可以将老鼠变成猫。另外,如果想把猫变成鱼,可以通过念一个直接魔咒lalala,也可以将猫变老鼠、老鼠变鱼的魔咒连起来念:hahahehe。现在哈利·波特的手里有一本教材,里面列出了所有的变形魔咒和能变的动物。老师允许他自己带一只动物去考场,要考察他把这只动物变成任意一只指定动物的本事。原创 2020-07-06 17:20:58 · 367 阅读 · 0 评论 -
数据结构之排序 篇六——快速排序
快速排序快速排序被认为是最快的排序方式,但是无论是哪一种排序方式都最好和最坏的情况下,因此每一种排序方式都只会在某种排序条件下才能有它的快和慢。快速排序(Quicksort)是对冒泡排序的一种改进。快速排序由C. A. R. Hoare在1960年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。https://baike.b原创 2020-06-09 11:00:59 · 260 阅读 · 0 评论 -
数据结构之排序 篇五——归并排序(非递归法)
归并排序归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。归并排序是一种稳定的排序方法。https://baike.baidu.com/item/%E5%BD%92%E5%B9%B6%E6%8E%92%E5%BA%8F/1639015?fr=aladdin下面是代码,原创 2020-06-09 09:47:01 · 292 阅读 · 0 评论 -
数据结构之排序 篇四——有序子列的归并与递归算法实现有序子列归并
有序子列的归并简单来说,将一个序列的两个有序子列归并成一个有序子列。实现起来也不会很难,主要就是有三个指针,每次比较两个序列指针指向的值的大小,然后移入一个到最终序列中,并且进行操作的序列指针分别向后移动,依次进行,直到最后。#include <iostream>using namespace std;/* run this program using the console pauser or add your own getch, system("pause") o.原创 2020-06-08 22:10:42 · 225 阅读 · 0 评论 -
数据结构之排序 篇三——选择排序
选择排序前面忘了选择排序,现在补上。所谓选择排序指的是每次选择最小的元素进行调换位置。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。https://baike.baidu.com/item/%E9%80%89%E6%8B%A9%E6%8E%92%E5%BA%8F/9762418?fr=aladdin.原创 2020-06-08 19:52:28 · 155 阅读 · 0 评论 -
数据结构之排序 篇一——简单排序(冒泡、插入排序)
好久没更新数据结构啦,我又回来了,这次呢继续更新数据结构之排序篇,然后这个排序篇会有很多小的模块,我会分成好几个博客来分享,还是习惯只记重点,很多细节建议百度,如有不对的地方,敬请指正!谢谢~冒泡算法:它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中原创 2020-06-08 17:05:20 · 233 阅读 · 0 评论 -
数据结构之图 篇二——普利姆算法与克鲁斯算法实现最小生成树
最小生成树普里姆算法(Prim算法)是图论中的一种算法,可在加权连通图里搜索最小生成树。意即由此算法搜索到的边子集所构成的树中,不但包括了连通图里的所有顶点(英语:Vertex (graph theory)),且其所有边的权值之和亦为最小。该算法于1930年由捷克数学家沃伊捷赫·亚尔尼克(英语:Vojtěch Jarník)发现;并在1957年由美国计算机科学家罗伯特·普里姆(英语:Robert C. Prim)独立发现;1959年,艾兹格·迪科斯彻再次发现了该算法。因此,在某些场合,普里姆算.原创 2020-05-21 22:05:54 · 321 阅读 · 0 评论 -
数据结构之图 篇一——邻接矩阵存储结构实现深度优先遍历和广度优先遍历
是的,今天又来啦~终于迎来了数据结构之图篇一,这篇博客主要实现是图的邻接矩阵存储结构实现深度优先遍历和广度优先遍历。首先呢?介绍一下图的存储结构:1、邻接矩阵;2、邻接表; 3、十字链表;4、邻接多重表图的遍历方式:1、深度优先遍历; 2、广度优先遍历最小生成树实现:1、普利姆算法; 2、克鲁斯尔算法接着看代码1、Node.h#ifndef NODE_H#define NODE_Hclass Node{public: Node(char data = 0..原创 2020-05-14 22:44:37 · 4953 阅读 · 0 评论 -
数据结构之树 篇二——二叉树前序、中序和后序遍历实现
在上一篇博客最后的笔记里面记载了二叉树的遍历三种情况:前序、中序和后序遍历在这一篇博客里面主要是通过链表的方式来实现的详细看代码:1、Node.h#ifndef NODE_H#define NODE_Hclass Node{public: Node(); Node *SearchNode(int nodeIndex); //查找 void DeleteNode(); void PreorderTraversal(); void InorderTraversal();原创 2020-05-14 22:29:08 · 200 阅读 · 0 评论 -
数据结构之树 篇一——二叉树数组实现
隔了好久,数据结构之树篇终于来啦!还是C++实现,篇一介绍二叉树数组实现的前序遍历方式具体看代码:1、Tree.h#ifndef TREE_H#define TREE_Hclass Tree{public: Tree(int size, int *pRoot); //创建树 ~Tree(); //销毁树 int *SearchNode(int nodeIndex); //根据索引寻找结点 bool AddNode(int nodeIndex, int d.原创 2020-05-12 12:03:33 · 263 阅读 · 0 评论 -
数据结构字符BF匹配算法
#include <iostream>#include <cstring>using namespace std;int mapStr(char s1[], char s2[]){ int len1 = strlen(s1); int len2 = strlen(s2); int n = 0; for (int i = 0; i &...原创 2020-04-21 15:43:29 · 120 阅读 · 0 评论 -
数据结构之线性表 篇三——链表
好困啊,终于写完了1、Node.h#ifndef NODE_H#define NODE_Hclass Node{public: int data; //数据域 Node *next; //指针域 void printNode(); };#endif2、Node.cpp#include "Node.h"#include <iostream>...原创 2020-04-15 00:06:55 · 118 阅读 · 0 评论 -
数据结构之线性表 篇二——顺序表实现其他数据类型传入(以Coordinate坐标类为例)
关于Coordinate坐标的代码在前面几次数据结构的博客中写过了,今天做了一些修改,主要是添加了一个==的运算符重载。方法是类似,讲篇一中的int改成Coordinate, 然后重载运算符重新写一下,最后调试一些,应该没有问题下面看具体代码1、List.h#ifndef LIST_H#define LISH_H#include "Coordinate.h"class ...原创 2020-04-14 17:33:12 · 343 阅读 · 0 评论 -
数据结构之线性表 篇一——顺序表简单实现(以int型为例)
今天来到数据结构的线性表啦,学习就是要敲代码哦,加油!依旧还是C++实现的,记录代码方便以后学习就开始吧~1、List.h#ifndef LIST_H#define LISH_Hclass List{ public: List(int size); ~List(); void ClearList(); //清空线性表 bool ListEmpty...原创 2020-04-14 17:13:36 · 461 阅读 · 0 评论 -
数据结构之栈 篇五——栈应用实现符号字符串匹配判断
栈篇实现符号字符串匹配问题。可以输入不一样的括号字符串,测试是否匹配#include <iostream>#include <stdlib.h>#include <string.h>#include "MyStack.h"//#include "Coordinate.h"using namespace std; #define BINAR...原创 2020-04-14 11:34:23 · 611 阅读 · 0 评论 -
数据结构之栈 篇四——栈应用实现进制转换
在前面博客的基础上,应用栈实现进制转换,主要思想就是短除法,我们利用栈的先进后出的功能来实现逆向输出即可。下面代码还需要篇三里面的文件,MyStack.h1、应用一,简单篇#include <iostream>#include <stdlib.h>#include "MyStack.h"using namespace std; #define B...原创 2020-04-13 18:26:06 · 1850 阅读 · 0 评论 -
数据结构之栈 篇三——使用类模板实现任意数据类型传入
使用类模板实现任意数据类型传入,还是原来的基础上实现的关于C++类模板的使用不太清楚的,可以另外查询相关资料进一步学习,主要是template <typename T>下面是代码1、MyStack.h#ifndef MYSTACK_H#define MYSTACK_H template <typename T>class MyStack{ pu...原创 2020-04-13 17:16:38 · 310 阅读 · 0 评论 -
数据结构之栈 篇二——自定义数据类型传入实现(以Coordinate坐标类为例)
单一数据类型栈篇已经写过了,介绍int单一型传入,其他单一型方法类似本篇记载较复杂类型,定义Cooridinate类,传入坐标值,再熟悉栈的功能代码在篇一基础上添加了新的Coordinate类定义,和原来代码简单修改。为了方便学习和调试,这里还是把全部代码复制过来。1、Coordinate.h#ifndef COORDINATE_H#define COORDINATE_H...原创 2020-04-13 15:54:40 · 783 阅读 · 0 评论 -
数据结构之栈 篇一——单一数据类型实现(以int型为例)
栈篇C++简单实现,有时间再来补充完整1、MyStack.h#ifndef MYSTACK_H#define MYSTACK_H class MyStack{ public: MyStack(int size); //初始化栈空间 ~MyStack(); //回收栈空间 bool stackEmpty(); //判空 bool stackFull...原创 2020-04-14 11:34:01 · 347 阅读 · 0 评论 -
数据结构之队列篇——环形队列实现
环形队列参考代码:1、MyQueue.h#ifndef MYQUEUE_H#define MYQUEUE_H class MyQueue{public: MyQueue(int queueCapacity); //创建队列 virtual ~MyQueue(); //销毁队列 void ClearQueue(); ...原创 2020-04-13 11:25:09 · 277 阅读 · 0 评论