Data Structure And Algorithm
文章平均质量分 73
iteye_16572
这个作者很懒,什么都没留下…
展开
-
【排序算法系列】希尔排序
希尔排序的概述: a[0]...a[n-1] 将n个元素的数组,进行分组。同组内元素的索引相差gap(我们称之为步长)。第一次步长计算方式为 gap = n/2,第二次步长计算方式为 gap = gap/2...依次类推,直到gap = 0。每一次,对每个分组内的元素进行直接插入排序。最后对整一个数组进行直接插入排序,由于整个数组已经基本有序了,因此最后执行直接插入排序效率...原创 2015-12-05 16:14:01 · 120 阅读 · 0 评论 -
二叉排序树的递归与非递归查找
#include<iostream>using namespace std;//定义二叉树结点typedef struct BiTreeNode{ int value; BiTreeNode *lChild,*rChild;}BiTreeNode,*BiTree;//将结点插入为根节点的孩子结点,如果值小于根节点值,则插入到左子树void...2010-06-29 22:58:09 · 844 阅读 · 0 评论 -
二叉树中序线索化及查找某一结点的前驱,后继结点
#include<iostream>using namespace std;#define MAX 1500//二叉树定义typedef struct BiTreeNode{ char data; BiTreeNode *lChild; BiTreeNode *rChild; int lTag,rTag;}BiTreeNode;...2010-06-29 22:54:14 · 2831 阅读 · 0 评论 -
十字链表定义创建查找
#include<iostream>#define TRUE 1#define FALSE 0#define MAX 999using namespace std;//十字链表的元素定义typedef struct OLNode{ OLNode *right; OLNode *down; int iIndex,jIndex,value;...2010-06-29 22:44:10 · 754 阅读 · 0 评论 -
稀疏矩阵转置
#include<iostream>#define MAX 1000using namespace std;typedef struct Elem{ int row,col,value;}Elem;typedef struct Matrix{ Elem elems[MAX+1]; int m,n,len;}Matrix;...2010-06-29 22:39:52 · 203 阅读 · 0 评论 -
单链表实现集合并交差操作
#include<iostream>using namespace std;typedef struct Node{ char data; Node *next;}Node,*LinkList;#define SIZE sizeof(Node)#define FALSE 0#define TRUE 1//初始化集合void I...2010-06-29 22:34:38 · 557 阅读 · 0 评论 -
邻接表表示图的各结点的度数(无向图)出度(有向图)
#include<iostream>#include<string.h>using namespace std;#define MAX_VERTEX_NUM 50 //定义最大的结点数typedef enum{DG,UDG}GraphKind; //定义图的种类DG(有向图) UDG(无向图)t...2010-06-29 22:24:46 · 2037 阅读 · 1 评论 -
无向图连通分量的计算
#include<iostream>#define MAX_VERTEX_NUM 50using namespace std;typedef char VerType;typedef struct ArcNode //定义弧结点所在位置,{ int adj; int info; ArcNode *next...2010-06-29 22:19:20 · 694 阅读 · 0 评论 -
邻接表表示图DFS与BFS
#include<iostream>#define MAX_VERTEX_NUM 50using namespace std;typedef char VerType;typedef struct ArcNode //定义弧结点所在位置,{ int adj; int info; ArcNode *next...2010-06-29 22:14:14 · 171 阅读 · 0 评论 -
约瑟夫出圈
import java.util.ArrayList;import java.util.List;public class JosephOutOfCircle{ private static void initialize(List<Integer> list, int personNum) { for (int i = 0; i < personNum; ...原创 2010-06-29 22:06:12 · 123 阅读 · 0 评论 -
大数进制转换
#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;void change(int base1,int base2,char str[],char result[]);int leap;int main(){int n;while(...原创 2010-06-29 21:58:31 · 66 阅读 · 0 评论 -
线索二叉树中插入结点
#include<iostream>using namespace std;#define MAX 1500//二叉树定义typedef struct BiTreeNode{ char data; BiTreeNode *lChild; BiTreeNode *rChild; int lTag,rTag;}BiTreeNode;...2010-06-29 23:05:16 · 1250 阅读 · 0 评论 -
二叉排序树转双向链表(要求无任何新增节点)
题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。 比如将二元查找树 10 ...原创 2010-06-29 23:07:08 · 138 阅读 · 0 评论 -
有序线性链表归并
#include<stdio.h>#include<stdlib.h>struct LNode{ int data; LNode* next;};typedef LNode* LinkedList;void ListCreate(LinkedList &list,int length){ LNode* p = list;...2013-10-05 11:30:24 · 188 阅读 · 0 评论 -
归并排序
public class MergeSort { public static void print(int[] c) { for (int i = 0; i < c.length; i++) { System.out.print(c[i] + " "); } System.out.println(); } public static void me...原创 2015-06-20 15:28:23 · 64 阅读 · 0 评论 -
插入排序
/** * 插入排序1 容易理解 * * @param array */ public static void insertSort1(int[] array) { int length = array.length; for (int i = 1; i < length; i++) { int j; for (j = i - 1;...原创 2015-06-20 15:27:28 · 88 阅读 · 0 评论 -
Trie树 应用 Phone List
Phone List 时间限制:5000 ms | 内存限制:65536 KB 描述 Given a list of phone numbers, determine if it is consistent in thesense that no number is the prefix of anot...2012-06-15 11:21:55 · 71 阅读 · 0 评论 -
Trie树 单词查找树 键树(JAVA版附分析说明)
来源于英文“retrieval”. Trie树就是字符树,其核心思想就是空间换时间。 举个简单的例子。 给你100000个长度不超过10的单词。对于每一个单词,我们要判断他出没出现过,如果出现了,第一次出现第几个位置。这题当然可以用hash来,但是我要介绍的是trie树。在某些方面它的用途更大。比如说对于某一个单词,我要询问它的前缀是否出现过。这样hash就不...2012-06-13 10:27:40 · 211 阅读 · 0 评论 -
Trie树 单词查找树 键树
转自:http://zh.wikipedia.org/wiki/%E7%B4%A2%E5%9B%9E%E6%A0%91Trie,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:最大限度地减少无谓的字符串比较,查询效率比哈希...原创 2012-06-12 08:59:18 · 272 阅读 · 0 评论 -
SmartHashSet只是为了解释HashSet的原理
写该类的目的只是为了解释下HashSet的大致实现原理,主要要说明的思想是如何解决哈希冲突,在这里使用的是链表来解决哈希冲突。暂时未支持泛型^_^ 一、首先给出实现的原理图 一行可以看做一个链表,而第一列的所有Node节点是由Node[] nodes数组构成Node节点用于存放集合的数据,这个图不太科学,其实第一列的结点间不应该有箭头,因为是...2010-07-26 11:11:29 · 88 阅读 · 0 评论 -
二叉树中序遍历非递归算法
#include<iostream>using namespace std;typedef char ElemType;//二叉树结点的定义typedef struct BiTreeNode{ ElemType value; BiTreeNode *lChild,*rChild;}BiTreeNode,*BiTree;//栈结点的定义...2010-06-29 23:17:57 · 202 阅读 · 0 评论 -
二叉树的创建
#include<iostream>using namespace std;//二叉树定义typedef struct BiTreeNode{ int value; BiTreeNode *lChild,*rChild;}BiTreeNode,*BiTree;//将结点插入为根节点的孩子结点,如果值小于根节点值,则插入到左子树void I...2010-06-29 23:15:31 · 464 阅读 · 0 评论 -
哈弗曼树建立与哈弗曼编码
#include<iostream>#define LEN sizeof(HaffmanNode)#define MAXSIZE 100#define MAX 9999using namespace std;typedef struct{ int value; int lChild,rChild,parent;}HaffmanNode,H...2010-06-29 23:12:36 · 138 阅读 · 0 评论 -
拓扑排序(邻接表实现)
/********************************** title: 拓扑排序(邻接表实现) author: jay chang date: 2009/07/16**********************************/#include<iostream>#define ...2010-06-29 21:56:39 · 829 阅读 · 0 评论 -
拓扑排序(邻接矩阵实现)
/***************************** title : 拓扑排序(邻接矩阵实现) author: jay chang date : 2009/07/14*****************************/#include<iostream>using namespace std;#define MA...原创 2010-06-29 21:53:55 · 453 阅读 · 0 评论 -
二叉树的递归初始化,以及先序,中序,后序遍历
#include<iostream>using namespace std;typedef struct BiTreeNode{ char data; BiTreeNode *lChild; BiTreeNode *rChild;}BiTreeNode;//递归建立二叉树void InitialBiTree(BiTreeNode *&a...原创 2010-06-29 20:46:39 · 222 阅读 · 0 评论 -
递归求二叉树的叶子结点数及深度
#include<iostream>using namespace std;typedef struct BiTreeNode{char data;BiTreeNode *lChild;BiTreeNode *rChild;}BiTreeNode;int leafCount;//递归建立二叉树void InitialBiTree(Bi...原创 2010-06-29 20:45:03 · 824 阅读 · 0 评论 -
串的插入,删除,定位,连接等操作
#include<stdlib.h>#include<iostream>#define MAXLEN 20#define TRUE 1#define FALSE 0using namespace std;typedef struct SString{char ch[MAXLEN];int len;}SString;...2010-06-29 20:42:53 · 999 阅读 · 0 评论 -
单链表的增删查改
#include<stdio.h>#include<stdlib.h>typedef struct Node{ char ch; struct Node * next;}Node,*Linklist;int num;//查找给定值的结点,返回结点指针Node * findValue(char c,Node * head){...2010-06-29 20:40:15 · 141 阅读 · 0 评论 -
线性表插入,删除,查询操作
int find(int value){for(int i=0;i<currentP;++i){ if(arrayOfNum[i]==value) return i;}return -1;}void insert(int index){int num;if(index<0||index>currentP) cout<...2010-06-29 20:29:54 · 81 阅读 · 0 评论 -
双向链表
/*** @title <p>双向链表LinkedList</p>* @author Jay Chang* @version 1.0* @date 2009.8.9*/public class LinkedList {/** 结点内部类:定义结点存的内容,以及前后链接结点引用,以便实现双向链表 */class Node ...原创 2010-06-01 14:15:04 · 62 阅读 · 0 评论 -
泛型二叉排序树
import java.util.Arrays;import java.util.Collection;import java.util.Iterator;import java.util.Stack;/** * <p> * This class is used to store Element that implements the interface o...原创 2010-06-01 14:07:10 · 104 阅读 · 0 评论 -
二叉树遍历,求深度
/*** @title: 二叉树遍历,求深度* @author: Jay Chang* @version: ver 1.0* @date: 2009.7.25*/import java.util.Scanner;/*二叉树的结点的定义*/class BiTreeNode{private String nodeName;private int ...原创 2010-06-01 13:59:06 · 94 阅读 · 0 评论 -
数字金额转中文大写金额
/** * 用来将数字金额转化成中文大写的金额 * * @param value * @return */ public static String changeToBig(double value) { char[] hunit = { '拾', '佰', '仟' }; // 段内位置表示 ...原创 2010-11-26 15:09:41 · 108 阅读 · 0 评论 -
汉诺塔递归算法
import java.util.Scanner;/** * 汉诺塔 * * @author JayChang * */public class HanoiResolve { /** * 移动位置 * * @param positionA * @param positionB */ public static void m...2010-11-25 08:17:40 · 55 阅读 · 0 评论 -
链式循环队列添加,删除,取首
#include<stdlib.h>#include<iostream>#define TRUE 1#define FALSE 0using namespace std;typedef struct LinkQueueNode{ char data; LinkQueueNode *next;}LinkQueueNode;...2010-06-29 20:54:56 · 421 阅读 · 0 评论 -
链队列插入,删除,查找操作的实现
#include<iostream>#include<stdlib.h>#define TRUE 1#define FALSE 0using namespace std;typedef struct LinkQueueNode{ char data; LinkQueueNode *next;}LinkQueueNode;...2010-06-29 21:00:42 · 1061 阅读 · 0 评论 -
普利姆算法求连通图最小生成树
/*************************************** title:普利姆算法求连通图最小生成树 author: jay chang date: 2009.7.12 ****************************************/#inc...2010-06-29 21:51:11 · 349 阅读 · 0 评论 -
临界表标示图非递归DFS
#include<iostream>using namespace std;#define MAX_VERTEX_NUM 50 //定义最大的结点数typedef enum{DG,UDG}GraphKind; //定义图的种类DG(有向图) UDG(无向图)typedef char VertexData; ...2010-06-29 21:45:58 · 79 阅读 · 0 评论 -
邻接表表示图DFS
#include<iostream>using namespace std;#define MAX_VERTEX_NUM 50 //定义最大的结点数typedef enum{DG,UDG}GraphKind; //定义图的种类DG(有向图) UDG(无向图)typedef char VertexData; ...2010-06-29 21:44:31 · 169 阅读 · 0 评论