数据结构
文章平均质量分 66
奇迹是执着的人创造的
这个作者很懒,什么都没留下…
展开
-
红黑树(RBT)
红黑树RBT原创 2022-06-26 09:28:32 · 215 阅读 · 0 评论 -
算法笔记 9.8 哈夫曼树(最优二叉树)
9.8.1 哈夫曼树(建树思想)上一节墓地最后一题合并果子的思想就是哈夫曼树建树思想#include<iostream>#include<algorithm>#include<queue>using namespace std;int main(){ priority_queue<int,vector<i...原创 2019-04-20 16:55:27 · 473 阅读 · 0 评论 -
算法笔记 10.1 图的定义和相关术语 10.2 图的存储
图:由顶点(Vertex)和边(Edge)组成无向图:顶点的度是指和该顶点相连的边的条数。有向图:入度:入边条数 出度:出边条数边权和点权不一样: 顶点和边都可以有一定属性,量化的属性称为权值,顶点的权值和边的权值分别称为点权和边权。 eg:点权:城市里资源的数目 边权:两个城市之间来往所需要的时间或花费10.2 图的存储图的存储两种方式...原创 2019-04-20 21:42:23 · 154 阅读 · 0 评论 -
10.3 图的遍历
10.3.1 DFS遍历图1.用DFS遍历图邻接矩阵版:const int MAXV=1000;//最大顶点数const int INF=1e9;//无穷大//邻接矩阵DFSint n,G[MAXV][MAXV];//n为顶点数,MAXV为最大顶点数bool vis[MAXV]={false};//如果顶点i已被访问,则vis[i]=true,初值为falsevoid ...原创 2019-04-26 10:59:29 · 147 阅读 · 0 评论 -
PAT A1034 Head of a Gang
1034Head of a Gang(30分)One way that the police finds the head of a gang is to check people's phone calls. If there is a phone call betweenAandB, we say thatAandBis related. The weight of a...原创 2019-04-26 20:11:41 · 185 阅读 · 0 评论 -
PAT A1076 Forwards on Weibo (30 分)
1076Forwards on Weibo(30分)Weibo is known as the Chinese version of Twitter. One user on Weibo may have many followers, and may follow many other users as well. Hence a social network is formed wi...原创 2019-04-26 23:21:55 · 175 阅读 · 0 评论 -
codeup 10.3小节——图算法专题->图的遍历
问题 A: 第一题时间限制:1 Sec内存限制:32 MB提交:545解决:115[提交][状态][讨论版][命题人:外部导入]题目描述该题的目的是要你统计图的连通分支数。输入每个输入文件包含若干行,每行两个整数i,j,表示节点i和j之间存在一条边。输出输出每个图的联通分支数。样例输入1 44 35 5样例输出2本题难点...原创 2019-04-27 00:12:53 · 152 阅读 · 0 评论 -
算法笔记 10.4.1 最短路径 Dijkstra
最短路径要解决的问题对任意给定的图G(V,E)和起点S和终点T,如何求从S到T的最短路径Dijkstra、Bellman-Ford、SPFA、Floyd10.4.1 Dijkstra算法解决单源最短路径问题,即给定图G和起点s,通过算法得到S到达其他各点的最短距离Dijkstra伪代码//dijkstra伪代码//G为图,一般设成全局变量...原创 2019-05-02 00:18:30 · 519 阅读 · 0 评论 -
PAT A1003 Emergency (25 分)
1003Emergency(25分)As an emergency rescue team leader of a city, you are given a special map of your country. The map shows several scattered cities connected by some roads. Amount of rescue teams...原创 2019-05-02 00:59:27 · 177 阅读 · 0 评论 -
PAT A1030 Travel Plan (30 分)
1030Travel Plan(30分)A traveler's map gives the distances between cities along the highways, together with the cost of each highway. Now you are supposed to write a program to help a traveler to d...原创 2019-05-02 15:47:48 · 276 阅读 · 0 评论 -
算法笔记9.5 平衡二叉树(AVL树)
9.5.1 平衡二叉树的定义上一节的二叉二叉查找树BST,若按照顺序插入,会退化为一条链,eg:使用序列{1,2,3,4,5}构建二叉树,会得到于是需要对树的结构进行调整,使得树的高度在每次插入元素后仍然能保持O(logn)的级别,这样就产生了平衡二叉树。所谓平衡二叉树是指:对AVL树的任意结点来说,其左子树与右子树的高度之差的绝对值不超过1(左右子树的高度之差称为该结点的平衡因...原创 2019-04-18 21:53:07 · 755 阅读 · 1 评论 -
codeup 9.5小节——数据结构专题(2)->平衡二叉树(AVL)
问题 A: 算法9-9~9-12:平衡二叉树的基本操作时间限制:1 Sec内存限制:32 MB提交:295解决:127[提交][状态][讨论版][命题人:外部导入]题目描述平衡二叉树又称AVL树,它是一种具有平衡因子的特殊二叉排序树。平衡二叉树或者是一棵空树,或者是具有以下几条性质的二叉树:1.若它的左子树不空,则左子树上所有结点的值均小于它的根节...原创 2019-04-19 15:42:26 · 309 阅读 · 0 评论 -
算法笔记 9.7 堆
9.7.1 堆的定义与基本操作堆是一棵完全二叉树,树中每个结点的值都不小于(或不大于)其左右孩子结点的值。大顶堆:父节点值>=孩子结点的值此时父节点的值为子树最大小顶堆:父节点值<=孩子结点的值此时父节点的值为子树最小(堆一般用优先队列实现,而优先队列默认大顶堆,一下仅讨论大顶堆)定义及向下调整代码:const int maxn=...原创 2019-04-20 00:05:20 · 204 阅读 · 0 评论 -
codeup 9.7小节——数据结构专题(2)->堆
问题 A: 算法10-10,10-11:堆排序时间限制:1 Sec内存限制:32 MB提交:183解决:131[提交][状态][讨论版][命题人:外部导入]题目描述堆排序是一种利用堆结构进行排序的方法,它只需要一个记录大小的辅助空间,每个待排序的记录仅需要占用一个存储空间。首先建立小根堆或大根堆,然后通过利用堆的性质即堆顶的元素是最小或最大值,从而依次得出每一个...原创 2019-04-20 13:40:31 · 481 阅读 · 0 评论 -
codeup 9.8小节——树算法专题->哈夫曼树
问题 A: 算法6-12:自底向上的赫夫曼编码时间限制:1 Sec内存限制:32 MB提交:96解决:40[提交][状态][讨论版][命题人:外部导入]题目描述在通讯领域,经常需要将需要传送的文字转换成由二进制字符组成的字符串。在实际应用中,由于总是希望被传送的内容总长尽可能的短,如果对每个字符设计长度不等的编码,且让内容中出现次数较多的字符采用尽可能短的编码,则整...原创 2019-04-20 16:54:58 · 1044 阅读 · 0 评论 -
codeup 9.6小节——数据结构专题(2)->并查集
问题 A: 通信系统时间限制:1 Sec内存限制:32 MB提交:1078解决:297[提交][状态][讨论版][命题人:外部导入]题目描述某市计划建设一个通信系统。按照规划,这个系统包含若干端点,这些端点由通信线缆链接。消息可以在任何一个端点产生,并且只能通过线缆传送。每个端点接收消息后会将消息传送到与其相连的端点,除了那个消息发送过来的端点。如果某个端点是产生消...原创 2019-04-12 20:29:55 · 212 阅读 · 0 评论 -
算法笔记9.6 并查集
9.6.1并查集的定义9.6.2 并查集的基本操作 总体来说,并查集的使用先要初始化,然后查找合并1.初始化开始所有元素是一个独立的集合,父节点都初始化为自己 即:father[i]=i//初始化for(int i=0;i<=N;i++){ father[i]=i;//father[i]=-1也行 此处习惯用i}2.查找由于规定一个集合只有一个...原创 2019-04-12 15:27:22 · 187 阅读 · 1 评论 -
算法笔记7.1 栈的应用
1.自己实现栈的clear,size,empty,pop,topTOP本质上为·最大元素的下标,栈空时为-1#include<iostream>#include<stack>using namespace std;const int MAXSIZE=1000;struct Stack{ int st[MAXSIZE]; int TOP; S...原创 2019-03-12 11:29:56 · 355 阅读 · 0 评论 -
算法笔记 8.2 BFS
1.BFS模板//BFS模板void BFS(int s){ queue<int> q;//定义队列 q.push(s);//起始结点入队 while(!q.empty()){//非空循环 取出队首元素top; 访问队首元素top; 队首元素出队; 将top的下一层结点中未曾入队的结点全部入...原创 2019-03-16 20:48:13 · 302 阅读 · 0 评论 -
codeup 7.1 codeup
问题 A: 简单计算器时间限制:1 Sec内存限制:32 MB提交:1055解决:442[提交][状态][讨论版][命题人:外部导入]题目描述读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值。输入测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔。没有非法表达式。当一行中只有0时输...原创 2019-03-12 14:11:51 · 195 阅读 · 0 评论 -
算法笔记7.2 队列的应用
队列先进先出 ,每次只能取到队首元素,只能在队尾插入元素。两个指针,front和rearfront队首元素位置的上一个位置rear队尾元素的位置自己简单实现一个int型队列#include<iostream>using namespace std;struct Queue{ int front; int rear; int q[1000]; //...原创 2019-03-12 16:54:43 · 298 阅读 · 0 评论 -
算法笔记7.3 链表
自己实现单链表 指针实现create search insert del#include<iostream>using namespace std;struct node{ //数据域和指针域即可 int data; node* next;};//创建一个单向链表 根据数组来初始化相应结点node* create(int Array[]...原创 2019-03-13 15:42:15 · 162 阅读 · 0 评论 -
PAT A1032 Sharing
1032Sharing(25分)To store English words, one method is to use linked lists and store a word letter by letter. To save some space, we may let the words share the same sublist if they share the same...原创 2019-03-13 16:44:21 · 198 阅读 · 0 评论 -
PAT A1052 Linked List Sorting
1052Linked List Sorting(25分)A linked list consists of a series of structures, which are not necessarily adjacent in memory. We assume that each structure contains an integerkeyand aNextpointe...原创 2019-03-13 18:09:04 · 139 阅读 · 0 评论 -
算法笔记 9.1 树与二叉树
9.1.1 树的定义与性质记住以下性质:其中1和5经常被用来出边界数据 1.树可以没有结点,这种情况下把树称为空树 2.树的层次(layer)从根结点开始算起,即根结点为第一层,根结点子树的根结点为第二层,以此类推 3.把结点的子树课数称为结点的度(degree)(即:树结点的度指的是该节点孩子的个数.没有出度入度之分), 而树中结点的最大的度称为树的...原创 2019-04-03 21:54:06 · 962 阅读 · 0 评论 -
算法笔记9.2 二叉树的遍历 及 中序分别与先序、后序、层序搭配构建二叉树
目录9.2.1先序遍历9.2.2 中序遍历9.2.3后序遍历9.2.4层序遍历9.2.5根据先序中序序列,建立二叉树 变式.根据后序中序序列还原二叉树 变式:根据层序中序序列还原二叉树9.2.6二叉树的静态实现二叉树的遍历共四种:先序遍历、中序遍历、后序遍历、层次遍历前三种: 采用深度优先搜索(DFS)实现递归层次...原创 2019-04-05 18:27:34 · 493 阅读 · 0 评论 -
算法笔记9.3 树的遍历
本节讨论一般意义上的树,即子结点个数不限且子结点没有先后次序的树9.3.1 树的静态写法(孩子结点不定,普通的树一般都使用静态写法)1.树的存储结构//树的存储结构struct node{ Type data;//数据域 vector<int> child;//指针域,存放所有子结点的下标 孩子结点个数不定用vector}Node[maxn];2.新...原创 2019-04-10 15:18:01 · 192 阅读 · 0 评论 -
codeup 9.2小节——数据结构专题(2)->二叉树的遍历
问题 A: 复原二叉树时间限制:1 Sec内存限制:32 MB提交:333解决:202[提交][状态][讨论版][命题人:外部导入]题目描述小明在做数据结构的作业,其中一题是给你一棵二叉树的前序遍历和中序遍历结果,要求你写出这棵二叉树的后序遍历结果。输入输入包含多组测试数据。每组输入包含两个字符串,分别表示二叉树的前序遍历和中序遍历结果。每个字符串由不重复的...原创 2019-04-06 01:42:11 · 871 阅读 · 0 评论 -
codeup 9.3——数据结构专题(2)->树的遍历
问题 A: 树查找时间限制:1 Sec内存限制:32 MB提交:238解决:135[提交][状态][讨论版][命题人:外部导入]题目描述有一棵树,输出某一深度的所有节点,有则输出这些节点,无则输出EMPTY。该树是完全二叉树。输入输入有多组数据。每组输入一个n(1<=n<=1000),然后将树中的这n个节点依次输入,再输入一个d代表深度。输...原创 2019-04-10 17:42:43 · 239 阅读 · 0 评论 -
算法笔记9.4 二叉查找树 (BST)
9.4.1 二叉查找树的定义定义结构:struct node{ int data; node *lchild,*rchild; };node* newNode(int x){ node* Node=new node; Node->data=x; Node->lchild=Node->rchild=NULL; return Node;}1...原创 2019-04-10 21:51:01 · 284 阅读 · 0 评论 -
codeup 9.4小节——数据结构专题(2)->二叉查找树(BST)
问题 A: 二叉排序树时间限制:1 Sec内存限制:32 MB提交:326解决:138[提交][状态][讨论版][命题人:外部导入]题目描述输入一系列整数,建立二叉排序数,并进行前序,中序,后序遍历。输入输入第一行包括一个整数n(1<=n<=100)。接下来的一行包括n个整数。输出可能有多组测试数据,对于每组数据,将题目所给数据建立一个二...原创 2019-04-11 21:51:44 · 236 阅读 · 0 评论 -
算法笔记8.1 深度优先搜索 DFS
1.背包问题切入dfs,深度优先,递归找出所有路径(拿法),最终取最大的那个 有n件物品,每种物品的重量为w[i],价值为c[i].现在需要选出若干件物品放入一个容量为V的背包中,使得在选入背包的物品重量和不超过容量V的前提下,让背包中物品的价值之和最大,求最大价值。(1<=n<=20)#include<iostream>using namespace...原创 2019-03-14 21:17:41 · 430 阅读 · 0 评论