![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法与数据结构
赛马丸子
这个作者很懒,什么都没留下…
展开
-
正则表达式初级学习
1. 普通字符[ABC]: 匹配所有 A,B, C 三个字符。[^ABC]:除了A,B,C 三个以外的所有字符[A-Z][a-z]:所有大写字符, 小写字符[0-9]:所有数字[\s]:\s匹配所有空白符,包括空格,制表符,换页符,等价于[\f\n\r\t\v];[\S]: 所有非空白符,包括换行,等价于 [^\f\n\r\t\v];[\w]:匹配字母,数字,下划线[A-Za-z)0-9_]2. 非打印字符\f 换页符\n\r 回车符\t 制表符\v 垂直制表符\cx 匹配原创 2020-10-31 16:55:07 · 536 阅读 · 0 评论 -
最小生成树||最短路径 邻接矩阵实现prim算法C++代码
对于一个数据结构研究生才接触的学弱来说,这是第二次学习数据结构了。当初老师安排写一个最短路径问题,网上查了很多博客感觉鱼龙混杂的。我写这个博客目的之一就是给那些和我一样的小白一点点解惑的帮助,另外更是为了自己以后复习起来方便。一、最小生成树VS最短路径区分这两个概念非常重要,因为网上一堆prim算法, dijkstra算法,克鲁斯卡尔算法等,让人摸不着头脑他们之间有什么主要的区别和适用性。我...原创 2019-12-27 19:31:19 · 1094 阅读 · 0 评论 -
邻接矩阵实现图的深度优先搜索和广度优先搜索-C++代码
一、有向图概念:顶点:有向图的每一个节点弧:每一条线弧头:线的起始点弧尾:线的结束点出度/入度:出度:某一顶点发出去的弧的数量;入度:某一顶点射入的弧的数量二、无向图概念:邻接点:存在一条边连接两个点边:无向图中的连线;顶点:图中的节点;连通图:对于图内每一个顶点都直接或间接存在通往其他顶点的路径;完全图:图中任一顶点都存在和其他所有顶点的直接连线。...原创 2019-12-26 11:04:13 · 1462 阅读 · 0 评论 -
数据结构-回溯法-C++代码
人都会误以为自己特立独行 其实没有 你周围人是什么样你就会变成什么样 只会更变本加厉 甚至变成你最讨厌的人的样子 (所以要保持积极向上,不同流合污)但似乎每个人都觉得自己善良 勇敢 有梦想 去远方 不是的大多数人都只是把这些词汇当作平庸生活的浓缩营养药片真正风雨兼程低头走路的人 并不在乎它叫旅行或者流浪一、应用:满足一定约束条件的所有解或最优解都可用回溯法,其称之为“通用解题法”...原创 2019-12-25 09:29:09 · 347 阅读 · 0 评论 -
红黑树
什么是红黑树?————————————二叉查找树(BST)具备什么特性呢?1.左子树上所有结点的值均小于或等于它的根结点的值。2.右子树上所有结点的值均大于或等于它的根结点的值。3.左、右子树也分别为二叉排序树。下图中这棵树,就是一颗典型的二叉查找树:1.查看根节点9:2.由于10 > 9,...转载 2019-12-23 15:00:45 · 74 阅读 · 0 评论 -
数据结构-二叉树的添加和遍历-C++实现
一、树1.1 Concept: tree is a finite set of nodes.Child: all nodes except the parents node.Parents:the original root.Degree: its value is equal to how many children it has.Leaf(terminal node)...原创 2019-12-22 20:50:15 · 236 阅读 · 0 评论 -
二叉树的数组存储实现-c++代码
这个实现方法比较粗糙。将二叉树所有可能的位置按次序拍好,新建树时,如果某位置没有元素,则值为0,如果有元素,则值为传入的值。另外新赋值时,需要指定要在哪一个节点的左叉还是右叉插入什么值的指针?其他还有删除元素,在此代码中等价为将数组该处的值置为0。等//.h文件#pragma once#include<iostream>#define __debug__using n...原创 2019-12-18 21:59:30 · 592 阅读 · 0 评论 -
数据结构-链表(二)-通讯录-C++实现
通讯录的元素是人,所以需要新建一个Person类作为链表每个Node的元素。并且为了正常输出,Person还需要虫重载一些运算符,包括输出<<, 判等==main函数里也要写一些辅助函数来获取信息。链表本身实现部分不需要修改太多,把原来的的int型元素改为Person类型即可代码如下//Person.h#pragma once#include<iostream&g...原创 2019-12-18 09:32:52 · 558 阅读 · 0 评论 -
数据结构-链表-C++实现
单链表单链表:数据域+指针(最后一个指针指向NULL);双链表:指针+数据域+指针循环链表:数据域+指针(最后一个指针指向头指针)NULL;单链表需要的函数* class Node 元素:data,next;* class List List(); ~List(); bool get_add_head(Node* e);//在头节点后面插入新元素 bool ...原创 2019-12-17 15:59:44 · 139 阅读 · 0 评论 -
堆和栈的区别--(转载)
一、预备知识—程序的内存分配一个由C/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(...转载 2019-12-17 14:52:22 · 105 阅读 · 0 评论 -
数据结构-顺序表-c++实现
一、线性表分类(链表)线性表:n个元素操作系统?线性表分类:顺序表(数组)链表:静态链表单链表循环链表双向链表二、线性表操作一般线性表操作: MyArray(int size);//构造函数 ~MyArray();//析构 int get_length();//长度获取。 bool get_empty();//判空。 bool get_ele(int...原创 2019-12-15 20:38:13 · 160 阅读 · 0 评论 -
数据结构-栈(三)-c++代码--判断括号是否匹配
本文目的:利用栈机制实现字符串内括号是否匹配的判定。算法如下:定义栈1存字符串中读取的符号;定义栈2存放预期望的右括号符号;for(整个字符串){ 第一个元素是否是预期期望的右括号? 不是: { 是否为左括号: 是: { 判断是什么类型的左括号,然后存入栈1;将该类型对应的右括号存入栈2,将预期望符号改为该右括号; } 不是 { 判定字符串...原创 2019-12-13 10:59:14 · 1092 阅读 · 0 评论 -
数据结构-栈(二)模板-C++实现-2,8,16进制转换
本文目的:实现可以输出16进制带A,B,C,D,E,F等符号的进制转换;本文为16进制转换,2进制和8进制转换同理,但是就不需要char num[]="012…"等部分,直接遍历栈即可输出//栈的定义.h文件,与栈(一)略有不同#pragma once#include<iostream>#include<string>using namespace std;...原创 2019-12-12 11:18:10 · 298 阅读 · 0 评论 -
数据结构-栈(一)模板-C++实现
栈(一)—一种后进先出机制LIFO(last_in_first_out)//visit() 适用于遍历自定义类,较复杂栈的简单操作包括入栈、出栈、遍历等。和对列有很大相似性,只是头指针不再移动,永远是0,尾指针不断增加栈模板代码://栈模板#pragma once#include<iostream>#include<string>using namesp...原创 2019-12-12 10:10:48 · 218 阅读 · 0 评论 -
数据结构-环形队列-队列模板实现-c++代码
一、队列(FIFO-first in first out)分类:普通队列: 先进先出,读取时有两种:一种是指针移动向下读取;一种是每读取一个元素,后面的所有元素自动向前移动一个位置。这两种办法都有缺点。第一种会造成出栈后的数据的位置没有被重新利用,内存浪费。第二种是每次读出一个元素,后面所有元素都前进移动,效率低下。环形队列: 预先设定环形队列可容纳值的大小,分头指针和尾指针指示...原创 2019-12-11 08:47:11 · 272 阅读 · 0 评论