数据结构
小桥or流水
默默地走在码农的路上。。。
展开
-
南阳-63-小猴子下落
小猴子下落时间限制:3000 ms | 内存限制:65535 KB难度:3描述有一颗二叉树,最大深度为D,且所有叶子的深度都相同。所有结点从左到右从上到下的编号为1,2,3,·····,2的D次方减1。在结点1处放一个小猴子,它会往下跑。每个内结点上都有一个开关,初始全部关闭,当每次有小猴子跑到一个开关上时,它的状态都会改变,当到达一个内结点时,如果开关原创 2013-12-12 21:49:10 · 870 阅读 · 0 评论 -
二叉树前序遍历的非递归实现(京东笔试考过)
void PreOrder(BiTree root){ stack bitreeStack; while(root!=NULL || !bitreeStack.empty()) { while(root!=NULL) { coutdata<<endl; bitreeStack.pus原创 2014-10-29 21:31:14 · 620 阅读 · 0 评论 -
栈结构演示程序
#include #include #include using namespace std;const int size = 30;class Calculator;template class Stack { public: virtual bool IsEmpty()const=0; virtual bool IsFull()const=0; vi原创 2014-12-17 16:43:36 · 609 阅读 · 0 评论 -
条条大路通罗马(邻接矩阵法)
N个城市(N),从0到9编号,城市间要么有路,要么没路,计算城市A到B之间到底有多少条路。输入:N A B(1)A为出发城市,B为目的城市。然后n行表示行编号的城市到其他城市有没有路,0表示没有,1表示有路。输出:A到B有多少条路输入:3 0 2 1 1 1 1 1 1 1 1 1输出:2#include#includeusing原创 2014-12-13 15:44:48 · 1824 阅读 · 1 评论 -
关于单链表的练习
链表的逆序#include using namespace std;struct Node{ int element; Node *next;};Node *create(int a[],int n) { Node *head = new Node; //生成头结点 Node *r,*s; r = head; //尾指针初始化原创 2014-12-15 22:06:13 · 566 阅读 · 0 评论 -
数据结构--KMP算法
求串的模式值next[n]定义:(1)next[0]= -1 意义:任何串的第一个字符的模式值规定为-1。(2)next[j]= -1 意义:模式串T中下标为j的字符,如果与首字符相同,且j的前面的1—k个字符与开头的1—k个字符不等(或者相等但T[k]==T[j])(1≤k)。如:T=”abCabCad” 则 next[6]=-1,因T[3]=T[6](3原创 2014-09-09 22:20:24 · 590 阅读 · 0 评论 -
南邮-1214-排序的字典序问题
排列的字典序问题时间限制(普通/Java):1000MS/3000MS 运行内存限制:65536KByte总提交:84 测试通过:21描述n个元素{1,2,..., n }有n!个不同的排列。将这n!个排列按字典序排列,并编号为0,1,…,n!-1。每个排列的编号为其字典序值。例如,当n=3时,6个不同排列的字典序值如下:原创 2014-01-13 10:18:56 · 938 阅读 · 0 评论 -
DFS(深度优先遍历)和 BFS(广度优先遍历)
//用邻接矩阵表示的图的深度优先搜索和广度优先搜索//以无向图为基础//DFS(深度优先搜索),采用的方法是递归//BFS(广度优先搜索),采用的是队列的方案#include#include#include#include//头文件包含malloc函数,用来申请内存空间using namespace std;const int maxnum = 100;//设置邻接矩阵的最大原创 2015-04-15 15:47:25 · 919 阅读 · 0 评论 -
建立一个二叉排序树,并计算其高度,是否为二叉平衡树
#include using namespace std;struct Node{ Node *lchild; Node *rchild; int d;}Tree[100];int loc;Node *create(){ Tree[loc].lchild = Tree[loc].rchild = NULL; return &Tree[loc++];}Node *in原创 2014-12-16 11:14:23 · 1540 阅读 · 0 评论 -
堆排序与其他排序算法的时间效率比较
#include #include #include using namespace std;//------------------------快速排序----------------------------void quick_sort(int s[], int l, int r){ if (l < r) { int i = l, j = r, x = s[l]; wh原创 2014-10-11 11:28:51 · 1444 阅读 · 0 评论 -
priority_queue 优先级队列的使用
程序功能是模拟排队过程,每人有姓名和优先级,优先级相同则比较姓名,开始有5个人进入队列,然后队头2个人出队,再有3个人进入队列,最后所有人都依次出队,程序会输出离开队伍的顺序。原创 2014-10-11 13:51:35 · 805 阅读 · 0 评论 -
deque双向队列
deque双向队列是一种双向开口的连续线性空间,可以高效的在头尾两端插入和删除元素,deque在接口上和vector非常相似,下面列出deque的常用成员函数: deque的实现比较复杂,内部会维护一个map(注意!不是STL中的map容器)即一小块连续的空间,该空间中每个元素都是指针,指向另一段(较大的)区域,这个区域称为缓冲区,缓冲区用来保存de转载 2014-10-11 11:40:28 · 539 阅读 · 0 评论 -
题目1078:二叉树遍历
题目描述:二叉树的前序、中序、后序遍历的定义:前序遍历:对任一子树,先访问跟,然后遍历其左子树,最后遍历其右子树;中序遍历:对任一子树,先遍历其左子树,然后访问根,最后遍历其右子树;后序遍历:对任一子树,先遍历其左子树,然后遍历其右子树,最后访问根。给定一棵二叉树的前序遍历和中序遍历,求其后序遍历(提示:给定前序遍历与中序遍历能够唯一确定后序遍历)。输入:原创 2014-09-13 18:05:37 · 616 阅读 · 0 评论 -
题目1201:二叉排序树 -九度
题目描述: 输入一系列整数,建立二叉排序数,并进行前序,中序,后序遍历。输入: 输入第一行包括一个整数n(1 接下来的一行包括n个整数。输出: 可能有多组测试数据,对于每组数据,将题目所给数据建立一个二叉排序树,并对二叉排序树进行前序、中序和后序遍历。 每种遍历结果输出一行。每行最后一个数据之后有一个空格。原创 2014-09-13 18:27:01 · 475 阅读 · 0 评论 -
题目1172:哈夫曼树 九度
题目描述:哈夫曼树,第一行输入一个数n,表示叶结点的个数。需要用这些叶结点生成哈夫曼树,根据哈夫曼树的概念,这些结点有权值,即weight,题目需要输出所有结点的值与权值的乘积之和。输入:输入有多组数据。每组第一行输入一个数n,接着输入n个叶节点(叶节点权值不超过100,2输出:输出权值。样例输入:5 1 2 2 5 9原创 2014-09-13 21:00:50 · 671 阅读 · 0 评论 -
数据结构:二分查找算法
#include using namespace std;int b[]={1,2,3,4,5,6,7,8,9};/*递归做法int BSearch(int x,int low,int high){ if(low<=high){ int m = (low+high)/2; if(x<b[m]) return BSearch(x,low,m-1); else if(x>b[m原创 2014-10-23 22:40:15 · 675 阅读 · 0 评论 -
乱七八糟的排序算法
#includeusing namespace std;int a[5]={3,5,4,2,6};void swap(int *p,int *q){ int temp; temp=*p; *p=*q; *q=temp;}/*选择排序算法 时间复杂度O(n2),时间复杂度O(1)void select(int a[]){int i,j;for(i原创 2014-10-24 18:02:22 · 616 阅读 · 0 评论 -
对堆排序的理解
#include #include #include #include using namespace std;//------堆排序----------inline void Swap(int &a, int &b){ int c = a; a = b; b = c;}//建立最小堆// 从i节点开始调整,n为节点总数 从0开始计算 i节点的子节点为 2*i+1, 2原创 2014-10-25 11:00:16 · 579 阅读 · 0 评论 -
单链表之选择排序
#include "stdio.h"#include #include #define OK 1#define ERROR 0#define TRUE 1#define FALSE 0typedef int Status;/* Status是函数的类型,其值是函数结果状态代码,如OK等 */typedef int ElemType;/* ElemType类型根据实际情况而定,这里转载 2014-10-25 14:45:58 · 676 阅读 · 0 评论 -
快速排序--陈惠南版
void qsort(int a[],int left,int right){ int i,j; if(left<right){ i=left; j=right+1; do{ do i++;while (a[i]<a[left]); do j--;while (a[j]>a[left]); if(i<j) swap(a[i],a[j]); }whil原创 2014-09-08 22:19:37 · 1342 阅读 · 1 评论 -
并查集介绍
并查集由一个整数型的数组和两个函数构成。数组pre[]记录每个点的前导点是什么,函数find是查找,join是合并。下面分别是这两个函数的实现形式:find函数:int find(int x){ int r = x; while (pre[r] != r) r = pre[r]; int i = x; int j; while (i != r) { j = pre[原创 2015-04-17 10:45:43 · 445 阅读 · 0 评论