数据结构
文章平均质量分 67
ZXLS-ZMR
我喜欢编程喜欢学习新的知识
展开
-
ACM-josephus问题
这个是个古老的游戏(死亡游戏),n个人围成一圈,随便从第一个人开始从1报数,报到该数(m)的人,就被踢出,再接着往下开始从1报数包到m的数又被踢出,依次报下去,直到只剩下1个人,则该人存活下来。在这个死亡游戏里面最好生存下来的就是约瑟夫.不过,还有他的一位朋友。(这是因为他两人耍赖!).要用代码实现它,就得设计一个数据结构。满足:具有循环,随时删除一个数原创 2013-03-31 23:42:12 · 1088 阅读 · 0 评论 -
Huffman(赫夫曼树)
1.Huffman设计了一个贪心算法来构造最优前缀码,可以有效地压缩数据,按频率(大小)来编码。2.构造huffman树最普通的算法是每次选出两个最小的元素作为它的左右子树。依次从叶节点向上回溯,即可构造一棵huffman树。3.基于上面的思想,由于每次选出两个最小的元素,可以用到最小堆的性质在O(logn)时间内找最小的元素。(优先队列就是靠最小堆(最大堆)实现的)。1.普通算法pa原创 2014-11-30 19:41:00 · 864 阅读 · 0 评论 -
Java实现链表
Java没有指针,那么java靠什么实现指针呢?java原创 2014-04-16 20:33:24 · 751 阅读 · 0 评论 -
航班信息检索与查询(基数排序)
花了一周的时间搞数据结构课程设计,现在想起来也不咋样。 航班信息检索与查询系统源代码在”StdAfx.h”文件中:#if !defined(AFX_STDAFX_H__5D4863DA_370E_4BF2_ACA1_DEF9B55C465C__INCLUDED_)#define AFX_STDAFX_H__5D4863DA_370E_4BF2_ACA原创 2013-12-27 18:06:25 · 3404 阅读 · 0 评论 -
SOJ-3281 hm与zx的故事系列3
这题我认为出的很好,有种看似容易,做起来却好纠结的。解题出发点:只要存在一个数它的位置靠前且比后面的一个数大,那么后面的这个数就没必要去比较了。还有一个技巧是:从后面循环,用栈来维护当前的递减序列,解决这个问题。不过如果是从前面开始,这题就不好做了。好好去体会。[cpp] view plaincopyprint?#include原创 2013-12-01 18:41:12 · 1171 阅读 · 0 评论 -
二叉树的建立与遍历
二叉树的建立于遍历靠递归实现的。先左或右。代码实现:#include#include#includeusing namespace std ;typedef struct node{ char data; node *LChild; node *RChild;}BitNode,*BiTree;void CreatBiTree(BiTree &bt) //原创 2013-11-04 22:10:02 · 653 阅读 · 0 评论 -
POJ-1703 并查集
并查集的经典入门题。思路:将有联系的两个节点,节点小的看成大的父节点,每次加入节点,在修改父节点时用rank[i]记录节点i的状态。即:rank[1]表示有关系,rank[0]表示无关系。#include#include#includeusing namespace std ;const int N=100005;int father[N];int rank[N];原创 2013-10-21 21:26:43 · 628 阅读 · 0 评论 -
并查集-POJ2912 Rochambeau
题意:有n个孩子玩"石子剪刀布",有3组,每一组在每一轮游戏中的孩子出的手势是一样,但在他们其中有一个judge出的手势是随意。经过m次游戏,问你能否找出这个judge的孩子。分析:此题是3个制约关系,很容易想到poj中食物链的那道题,也是形成3个制约关系。可以直接套公式:Rank[x]=(Rank[y]-Rank[x]+d-1+3)%3(1由于数据不大,可以对每个孩子枚举。由于judge原创 2013-10-27 21:07:51 · 872 阅读 · 0 评论 -
POJ-1308 并查集-Is It A Tree?
判断是否构成一棵树。并查集,判断所有的点的根是否相同就行了。#include#include#include#define N 100010 using namespace std ;int father[N];bool vis[N];void Init(){ for(int i=0;i<=N;i++){ father[i]=i; vis[i]=0; }原创 2013-10-27 20:22:21 · 693 阅读 · 0 评论 -
链表的基本操作
新学期学了数据结构,温故以前学的知识,把链表的基本操作重新学了一遍:基本操作:建立链表清空链表插入数据删除数据查找数据#include#include#include#includeusing namespace std ;struct node{ int num; node *next; node(){ next=NULL; }};nod原创 2013-09-09 20:06:29 · 607 阅读 · 0 评论 -
红黑树
package datastructure.tree;/** * 红黑树是基于平衡二叉搜索树的一种扩展,它是给据红黑结点来判断是否旋转并进行相应的处理 * 这样就省去了平衡因子的判断,简化了算法的难度。根据红黑结点以调整树的平衡因子,这种 方 * 法可以近似平衡。红黑树具有以下性质: * 1.每个结点要么是黑色,要么是红色。(源于算法导论第三版) * 2.根结点是黑色的。 *原创 2014-12-06 18:35:17 · 1060 阅读 · 0 评论