算法和数据结构
ZenZenZ
如是相,如是性,如是体,如是力,如是作,如是因,如是缘,如是果,如是报,如是本末究竟。
展开
-
二叉搜索树
二叉搜索树是红黑树的基础。关于红黑树的链接:http://blog.csdn.net/v_JULY_v/article/details/6105630linux kernel 源码中关于红黑树的链接:https://github.com/torvalds/linux/blob/master/lib/rbtree.chttps://github.com/torvalds/linu原创 2015-01-14 14:15:05 · 512 阅读 · 0 评论 -
红黑二叉树插入
红黑树是一棵二叉搜索书,它在每个结点上增加了一个存储位来表示结点颜色(RED或BLACK)。通过对任何一条从根到叶子的简单路径上各个节点的颜色进行约束,红黑树确保没有一条路径会比其他路径长出2倍,因而是近似于平衡的。树中每个结点包含5个属性:color,key,left,right和p。一棵红黑树是满足下面红黑性质的二叉搜索树:1.每个节点或是红色的,或是黑色的。2.根原创 2015-01-20 11:17:45 · 734 阅读 · 0 评论 -
希尔排序
#include using namespace std;//extern void InsertSort(int* a, int n);//extern void ShellSort(int* a, int n);extern void print(int* a,int n, int i);/*========================================原创 2014-09-25 18:20:43 · 369 阅读 · 0 评论 -
二叉树层序遍历
#ifndef QUEUE_H#define QUEUE_H#include "common.h"#ifdef TREE#define QElemType Tree#else#define QElemType ElemType#endiftypedef struct _SQueue{ QElemType *addr; int head; int tail; int原创 2014-12-10 17:41:53 · 393 阅读 · 0 评论 -
汉诺塔
static void move(int n,char a,char b, char c);void Hanoi(){ int n; printf("Input the number of disks:"); scanf("%d",&n); move(n,'A','B','C');}static void move(int n,char a,char b, char c){原创 2014-11-06 18:14:57 · 408 阅读 · 0 评论 -
二叉树非递归
/************************************************************************非递归遍历:(1)工作记录中包含两项,其一是递归调用的语句编号,其二是指向根节点的指针, 则当栈顶记录中的指针非空是,应遍历左子树,即指向左子树根的指针进栈;(2)若栈顶记录中的指针值为空,则应退至上一层, 若是从左子树返回,则应访问当前层即原创 2014-12-02 10:01:34 · 478 阅读 · 0 评论 -
多叉树转二叉树
#include #include typedef struct TreeNode{ int child_count; int data; struct TreeNode *child[3];}TreeNode_t;typedef struct BinaryTreeNode{ int data; struct BinaryTreeNode *leftchild; stru原创 2014-11-26 20:32:09 · 1345 阅读 · 0 评论 -
快速排序
#include using namespace std;extern void print(int*a, int n, int i);extern void swap(int* a, int *b);/*==================================================//功能: 根据基准值将数组划分成两部分 //描述: 将小于基准值的数依原创 2014-09-25 18:17:46 · 341 阅读 · 0 评论 -
排序方法
#include #include "common.h"using namespace std;extern void InsertSort(int* a, int n);extern void SelectSort(int* a, int n);extern void BubbleSort(int* a, int n);extern void print(int*原创 2014-09-24 15:51:59 · 371 阅读 · 0 评论 -
二叉树2
#include "stdio.h"//二叉树的练习typedef struct BiTNode{ char data; /*结点的数据域*/ struct BiTNode *lchild , *rchild; /*指向左孩子和右孩子*/} BiTNode , *BiTree;/*创建一棵二叉树*/CreatBiTree(BiTree *T){原创 2014-11-26 20:30:40 · 408 阅读 · 0 评论 -
红黑二叉树
//// 五条属性:// 1.每个节点或是红色的,或是黑色的。// 2.根节点是黑色的。// 3.每个叶结点(NIL)是黑色的。// 4.如果一个结点是红色的,则它的两个子结点都是黑色的。// 5.对每个结点,从该结点到其所有后代叶结点的简单路径上// 均包含相同数目的黑色结点。////http://blog.csdn.net/v_JULY_v/article/details/原创 2015-01-28 14:43:23 · 1248 阅读 · 0 评论 -
递归练习--递归方法插入数据
#include #include using namespace std;void print(char*,int);void InsertIntoVector(char*,int);void PrintVector();void Insertion(char c,int start, int end);vectorVecChar;int main(int argc, ch原创 2014-12-16 16:44:30 · 1791 阅读 · 0 评论 -
线索二叉树
#include "common.h"#include #include "Stack.h"#include "Queue.h"extern void DataStructure();static BOOL BinTreeLookUp(Node* node, int target);static Node* BinTreeInsert(Node* node, int data);s原创 2014-12-15 14:04:16 · 414 阅读 · 0 评论 -
插入排序和归并排序
插入paiu原创 2014-11-10 14:20:37 · 1452 阅读 · 1 评论 -
进制转换
status StackInit(SqSTACK* stack){stack->base = (ElemType*)malloc(STACK_INIT_SIZE * sizeof(int));if(!stack->base){return ERROR;}stack->top = stack->base;stack->stackSize = STACK_INIT_SIZE;return OK;}st原创 2014-10-30 11:13:28 · 393 阅读 · 0 评论 -
堆排序
/************************************************************************///堆排序过程// 1.将数组组建成最大堆。(堆顶为最大值)// 2.分两部分:// (1)将最大值与堆底的元素交换(将最大值放到数组的最后)// (2)对除去最后一个最大值的堆调整成新的最大堆。/***********原创 2014-11-18 16:54:54 · 432 阅读 · 0 评论 -
快速排序
/************************************************************************///分区将数组分为两部分并返回中间的坐标//实现方式是设置两个坐标记录点分别为小端末尾点i和接受检测点也即大端末尾+1点j,//从起始位置开始当受测点有小于标准值a[r]时,小端末尾点i即+1,将检测点a[j]与a[i]交换,//这样实际上是大原创 2014-11-19 14:09:35 · 375 阅读 · 0 评论 -
二叉树
http://cslibrary.stanford.edu/110/BinaryTrees.html翻译 2014-11-25 14:30:20 · 434 阅读 · 0 评论 -
计数排序
/************************************************************************///计数排序// 1、计算出输入数组中的个元素的个数并将统计保存在另一个数组中// 保存形式为:在计数数组对应的位置处存放对应元素值的个数// 2、计算计数数组的在第i个元素处小于等于i的元素的个数。// 这样的用处是为了第3步。原创 2014-11-20 16:13:08 · 372 阅读 · 0 评论 -
堆栈
/************************************************************************////************************************************************************/status StackInit(SqSTACK* stack){ stack->bas原创 2014-11-21 11:15:23 · 379 阅读 · 0 评论 -
表达式求值
status StackInit(SqSTACK* stack){ stack->base = (ElemType*)malloc(STACK_INIT_SIZE * sizeof(int)); if(!stack->base) { return ERROR; } stack->top = stack->base; stack->stackSize = STACK_INIT_SI原创 2014-10-31 15:17:53 · 416 阅读 · 0 评论 -
队列
status QueueInit(SQueue* queue);status QueueDestroy(SQueue* queue);status QueueWrite(SQueue* queue,ElemType e);status QueueRead(SQueue* queue,ElemType* e);void WriteToQueue(SQueue* queue);void原创 2014-11-21 17:25:14 · 375 阅读 · 0 评论 -
链表
SNode* LinkInsert(SNode *head,SNode *newNode);void LinkPrint(SNode *head);SNode* LinkDelete(SNode *head,ElemType e);SNode* LinkDestroy(SNode *head);void DataStructure(){ int i; //队列 //SQueue原创 2014-11-24 16:29:09 · 405 阅读 · 0 评论 -
最优二叉树哈夫曼编码
转自 http://www.cnblogs.com/Jezze/archive/2011/12/23/2299884.html在一般的数据结构的书中,树的那章后面,著者一般都会介绍一下哈夫曼(HUFFMAN) 树和哈夫曼编码。哈夫曼编码是哈夫曼树的一个应用。哈夫曼编码应用广泛,如 JPEG中就应用了哈夫曼编码。 首先介绍什么是哈夫曼树。哈夫曼树又称最优二叉树, 是一种带转载 2014-12-30 14:36:36 · 1080 阅读 · 0 评论