![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
N3verL4nd
中年老男人~
展开
-
头插法/尾插法建立线性链表
头插法#include #include typedef char ElemType;typedef struct Node{ ElemType data; struct Node *next;}Node, *LinkList;LinkList CreateFromHead(){ LinkList L; Node *s; char c; int flag原创 2013-03-06 15:41:18 · 1361 阅读 · 0 评论 -
hdoj_4006优先队列的使用
The kth great numberTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65768/65768 K (Java/Others)Total Submission(s): 4732 Accepted Submission(s): 1941Problem DescriptionXiao原创 2013-05-28 09:35:28 · 1208 阅读 · 0 评论 -
hdoj_3476Cyclic Nacklace
Cyclic NacklaceTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1694 Accepted Submission(s): 736Problem DescriptionCC always b原创 2013-05-27 15:09:06 · 1006 阅读 · 0 评论 -
hdoj_2087剪花布条
剪花布条Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 6019 Accepted Submission(s): 3987Problem Description一块花布条,里面有些图案,另有一块直接可用原创 2013-05-27 10:25:37 · 912 阅读 · 0 评论 -
HDOJ_2203亲和串
亲和串Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 5595 Accepted Submission(s): 2523Problem Description人随着岁数的增长是越大越聪明还是越大越笨,这原创 2013-05-27 09:43:00 · 985 阅读 · 0 评论 -
最短路径之Dijkstra算法详细讲解
1 最短路径算法在日常生活中,我们如果需要常常往返A地区和B地区之间,我们最希望知道的可能是从A地区到B地区间的众多路径中,那一条路径的路途最短。最短路径问题是图论研究中的一个经典算法问题, 旨在寻找图(由结点和路径组成的)中两结点之间的最短路径。 算法具体的形式包括:(1)确定起点的最短路径问题:即已知起始结点,求最短路径的问题。(2)确定终点的最短路径问题:与确定起点的问题相反,转载 2013-05-11 06:47:56 · 1322 阅读 · 0 评论 -
hdoj_1867A + B for you again
A + B for you againTime Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2989 Accepted Submission(s): 730Problem DescriptionGeneral原创 2013-05-27 19:56:02 · 1102 阅读 · 0 评论 -
HDOJ_1874畅通工程续 && hdoj_2544最短路
畅通工程续Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 17962 Accepted Submission(s): 6193Problem Description某省自从实行了很多年的畅通工程计划后,原创 2013-05-12 21:39:45 · 979 阅读 · 0 评论 -
hdoj_2066一个人的旅行
一个人的旅行Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 12658 Accepted Submission(s): 4301Problem Description虽然草儿是个路痴(就是在杭电待了一年原创 2013-05-12 23:47:46 · 883 阅读 · 0 评论 -
开放地址法
在开放地址法中,所有的元素都存放在哈希表里,也就是,每个表项或包含动态集合的一个元素,或包含NILint locate(int s){ int h; h=Hash(s); while (use[h]&&pst[h]!=s) { h++; if (h>=max) h-=max; } return h;}vo原创 2013-05-23 20:05:30 · 1024 阅读 · 0 评论 -
hdoj_1856More is better(并查集)
More is betterTime Limit: 5000/1000 MS (Java/Others) Memory Limit: 327680/102400 K (Java/Others)Total Submission(s): 8846 Accepted Submission(s): 3303Problem DescriptionMr Wang w原创 2013-05-08 22:47:26 · 780 阅读 · 0 评论 -
poj_3080Blue Jeans && poj_3450Corporate Identity(KMP)
Blue JeansTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 9476 Accepted: 3983DescriptionThe Genographic Project is a research partnership between IBM原创 2013-05-09 21:29:24 · 1404 阅读 · 0 评论 -
poj_2031Building a Space Station(最小生成树)
Building a Space StationTime Limit: 1000MS Memory Limit: 30000KTotal Submissions: 3397 Accepted: 1745DescriptionYou are a member of the space station engineerin原创 2013-05-10 14:06:19 · 1316 阅读 · 0 评论 -
STL容器之优先队列
优先级队列,以前刷题的时候用的比较熟,现在竟然我只能记得它的关键字是priority_queue(太伤了)。在一些定义了权重的地方这个数据结构是很有用的。先回顾队列的定义:队列(queue)维护了一组对象,进入队列的对象被放置在尾部,下一个被取出的元素则取自队列的首部。priority_queue特别之处在于,允许用户为队列中存储的元素设置优先级。这种队列不是直接将新元素放置在队列尾部,而转载 2013-05-27 08:42:57 · 850 阅读 · 0 评论 -
划分树
最近学习了一下划分树,下面总结一下。我们在求区间最值的时候,一般可以用线段树解决,但是如果要求区间第k小或者第k大值的话线段树就有点力不从心了,这是我们可以用划分树来解决。划分树利用了快速排序的思想,首先是建树,我们设当前区间的中位数为mid,(为了能快速找到区间的中位数,我们一般先对原序列做一次排序)则我们将区间中比mid小的放入左子树,将区间中比mid大数的放入右子树中,和mid相等的转载 2013-05-28 16:12:35 · 954 阅读 · 0 评论 -
poj_2104K-th Number
K-th NumberTime Limit: 20000MS Memory Limit: 65536KTotal Submissions: 31646 Accepted: 9771Case Time Limit: 2000MSDescriptionYou are working for Macrohard co原创 2013-05-28 16:15:30 · 1070 阅读 · 0 评论 -
链式队列
RationQueue.h#pragma onceclass RationQueue{public: RationQueue(); ~RationQueue();public: bool push(double d); //入栈 bool pop(double &data); //出栈 bool empty(); //判断栈是否为空private: typed原创 2016-10-06 23:06:40 · 363 阅读 · 0 评论 -
递归求解全排列
复习线代时想的=。=#include #include #include using namespace std;const int MAXN = 100;int n;bool visited[MAXN];int print[MAXN];void permulation(int num[], int len){ if (len == 0) { for (int i原创 2014-04-10 08:39:56 · 1039 阅读 · 0 评论 -
模拟求解迷宫问题(DFS+BFS)
代码下载:http://download.csdn.net/detail/lgh1992314/5326941迷宫是实验心理学中一个古典问题。以一个n*m的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。入口在左上方(1,1)处,出口在右下方(n,m)处。要求求出从迷宫入口到出口有无通路的最短路径。生成迷宫(调用的c语言中的srand和rand函数):#include #i原创 2013-04-17 17:57:51 · 1850 阅读 · 0 评论 -
八皇后问题求解
描述在国际象棋棋盘上放置八个皇后,要求每两个皇后之间不能直接吃掉对方。输入无输入。输出按给定顺序和格式输出所有八皇后问题的解(见Sample Output)。样例输入样例输出No. 11 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0原创 2013-07-03 08:32:47 · 1129 阅读 · 0 评论 -
【查找结构3】平衡二叉查找树 [AVL]
http://hxraid.iteye.com/blog/609949andhttp://www.cnblogs.com/fornever/archive/2011/11/15/2249492.html在上一个专题中,我们在谈论二叉查找树的效率的时候。不同结构的二叉查找树,查找效率有很大的不同(单支树结构的查找效率退化成了顺序查找)。如何解决这个问题呢?关键在于如何最大限度转载 2013-07-15 09:41:15 · 952 阅读 · 0 评论 -
data structure test
1、设计算法,对带头结点的单链表实现就地逆置。并给出单链表的存储结构(数据类型)的定义。#include #include #include #include using namespace std;typedef char ElemType;typedef struct Node{ ElemType data; struct Node *next;}Node, *Lin原创 2013-07-03 16:48:55 · 981 阅读 · 0 评论 -
插入排序
有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法,插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。插入算法把要排序的数组分成两部分:第一部分包含了这个数组的所有元素,但将最后一个元原创 2013-06-17 08:27:12 · 819 阅读 · 0 评论 -
Dijkstra模版
const int MAXN = 205;const int INF = 999999;int n;int maps[MAXN][MAXN];bool visited[MAXN];int pre[MAXN];int dist[MAXN];void init(){ memset(visited, false, sizeof(visited)); for (int i = 1;原创 2013-05-11 07:49:28 · 905 阅读 · 0 评论 -
RMQ问题ST算法
/*RMQ(Range Minimum/Maximum Query)问题: RMQ问题是求给定区间中的最值问题。当然,最简单的算法是O(n)的,但是对于查询次数很多(设置多大100万次),O(n)的算法效率不够。可以用线段树将算法优化到O(logn)(在线段树中保存线段的最值)。不过,Sparse_Table算法才是最好的:它可以在O(nlogn)的预处理以后实现O(1)的查询效率。下面把转载 2013-05-31 14:15:11 · 972 阅读 · 0 评论 -
hdoj_4417Super Mario
Super MarioTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1292 Accepted Submission(s): 636Problem DescriptionMario is world-原创 2013-05-28 21:43:01 · 1052 阅读 · 0 评论 -
zoj_3710Friends
FriendsTime Limit: 2 Seconds Memory Limit: 65536 KBAlice lives in the country where people like to make friends. The friendship is bidirectional and if any two person have no less than k原创 2013-05-30 15:06:59 · 886 阅读 · 0 评论 -
hdoj_4251The Famous ICPC Team Again
The Famous ICPC Team AgainTime Limit: 30000/15000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 645 Accepted Submission(s): 307Problem Description原创 2013-05-28 16:32:49 · 1161 阅读 · 0 评论 -
poj_2406Power Strings && poj_1961Period && poj_2752Seek the Name, Seek the Fame(KMP)
Power StringsTime Limit: 3000MS Memory Limit: 65536KTotal Submissions: 26173 Accepted: 10973DescriptionGiven two strings a and b we define a*b to be their conca原创 2013-05-07 21:49:20 · 907 阅读 · 0 评论 -
hdoj_3336Count the string(KMP)
Count the stringTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2808 Accepted Submission(s): 1308Problem DescriptionIt is wel原创 2013-05-08 19:11:06 · 928 阅读 · 0 评论 -
二叉树先序遍历、中序遍历、后序遍历
输入二叉树的先序遍历序列和中序遍历序列,输出该二叉树的后序遍历序列。(非建二叉树版本)#include#includeusing namespace std;string preord, inord;void rebuild (int preleft, int preright, int inleft, int inright){ int root, leftsize, rig原创 2013-04-24 17:49:40 · 1138 阅读 · 0 评论 -
数据结构之二叉树的建立与遍历
已知一个按先序序列输入的字符序列,如abc,,de,g,,f,,,(其中逗号表示空节点)。请建立二叉树并按中序和后序方式遍历二叉树,最后求出叶子节点个数和二叉树深度。#include<iostream>#include<queue>#include <cstdlib>#include <cstdio>using namespace std;...原创 2013-04-24 12:24:47 · 1050 阅读 · 0 评论 -
顺序栈的建立
#include #include #include #include #include using namespace std;#define MAX 100typedef int ElemType;typedef struct Stack{ ElemType elem[MAX]; int top;}Stack;void InitStack(Stack *S)//原创 2013-03-24 10:42:13 · 1235 阅读 · 0 评论 -
假设有两个按元素值递增有序排列的线性表A和B,均以单链表作存储结构,请编写算法将A表和B表归并为一个按元素值递减 有序(即非递增有序,允许表中含有值相同的元素)排列的线性表C,并要求利用原装(即A表和
假设有两个按元素值递增有序排列的线性表A和B,均以单链表作存储结构,请编写算法将A表和B表归并为一个按元素值递增 有序(即非递增有序,允许表中含有值相同的元素)排列的线性表C,并要求利用原装(即A表和B表)的结点空间构造C表。采用的方法:尾插法#include #include #include #include using namespace std;typedef原创 2013-03-23 10:50:21 · 20622 阅读 · 2 评论 -
分平面问题
(1) n条直线最多分平面问题 题目大致如:n条直线,最多可以把平面分为多少个区域。 析:可能你以前就见过这题目,这充其量是一道初中的思考题。但一个类型的题目还是从简单的入手,才容易发现规律。当有n-1条直线时,平面最多被分成了f(n-1)个区域。则第n条直线要是切成的区域数最多,就必须与每条直线相交且不能有同一交点。这样就会得到n-1个交点。这些交点将转载 2013-04-06 08:33:15 · 998 阅读 · 0 评论 -
链表的逆置
单链表的逆置#include #include #include #include using namespace std;typedef char ElemType;typedef struct Node{ ElemType data; struct Node *next;}Node, *LinkList;LinkList CreateList(){ LinkL原创 2013-03-22 16:28:47 · 1128 阅读 · 0 评论 -
已知顺序表L递增有序,写一算法,将X插入到线性表的适当位置,以保持线性表的有序
已知顺序表L递增有序,写一算法,将X插入到线性表的适当位置,以保持线性表的有序,逆置。本没有什么难度,可是写作业本上,不用DEBUG也还是出现了几个错误。切忌眼高手低。#include #include #include #include #include using namespace std;#define MAX 1000typedef int ElemType;原创 2013-03-22 13:06:54 · 14695 阅读 · 0 评论 -
队列实现
#include #include #include using namespace std;typedef char QueueElemType;typedef struct LinkQueueNode{ QueueElemType data; struct LinkQueueNode *next;}LinkQueueNode;typedef struct LinkQue原创 2013-04-03 12:52:40 · 839 阅读 · 0 评论 -
链栈的建立
#include #include #include using namespace std;typedef char StackElemType;typedef struct LinkStackNode{ StackElemType data; struct LinkStackNode *next;}LinkStackNode, *LinkStack;LinkStack原创 2013-04-02 11:25:58 · 1240 阅读 · 0 评论 -
汉诺塔
汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。#include #include using namespace std;void move原创 2013-03-31 21:50:24 · 998 阅读 · 0 评论