DataStruct
文章平均质量分 75
小熊熊-光头强
这个作者很懒,什么都没留下…
展开
-
数据结构学习之队列的数组实现
typedef int ElementType;#ifndef _Queue_hstruct QueueRecord;typedef struct QueueRecord *Queue;int IsEmpty(Queue Q);int IsFull(Queue Q);Queue CreateQueue(int MaxElements);void DisposeQueue(Queue Q);void原创 2014-07-10 15:47:32 · 387 阅读 · 0 评论 -
内部排序之插入排序,希尔排序
排序算法 排序有内部排序和外部排序 内部排序:数据记录在内存中排序 外部排序:因排序的数据很大,一次不能容纳全部 的排序记录,在排序的过程中需要访问外存 插入排序 将一个记录插入到已排序好的有序表中,从而得到一个新记录数增1的有序表。 即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入,直至整个序列有序为止。 要点:设立原创 2014-07-22 16:44:01 · 480 阅读 · 0 评论 -
归并,快速排序
归并排序 实现思想: 归并的含义很明显就是将两个或者两个以上的有序表组合成一个新的有序表。 归并排序中一般所用到的是2-路归并排序,即将含有n个元素的序列看成是n个有序的子序列, 每个子序列的长度为1,而后两两合并,得到n/2个长度为2或1的有序子序列,再进行两两合并。。。 直到最后由两个有序的子序列合并成为一个长度为n的有序序列。 2-原创 2014-07-23 14:30:59 · 360 阅读 · 0 评论 -
选择,冒泡排序
冒泡排序的思想很简单,如果要求排序后序列中元素按照从小到大的顺序排列,则冒泡排序的步骤如下: 1、依次比较序列中相邻的两个元素,将较大的放在后面,这样一趟比较后,最大的元素就放在了最后的一个位置; 2、再依次比较相邻的两个元素,将第二大的元素最终放到倒数第二个位置; 3、依次循环,直到最小的元素放在了第一个位置,排序完成。原创 2014-07-22 18:34:45 · 425 阅读 · 0 评论 -
单源点最短路径
1.基本思想 从图的给定源点到其他各个顶点之间客观上应存在一条最短路径 ,在这组最短路径中,按其长度的递增次序,依次求出到不同顶点的最短路径 和路径长度 即按长度递增的次序生成各顶点的最短路径,即先 求出长度最小的一条最短路径,然后求出长度第二小的 最短路径,依此类推,直到求出长度最长的最短路径. 2 算法思想说明 设给定 源点为 Vs,S为已求得最短路径的原创 2014-07-21 12:20:46 · 366 阅读 · 0 评论 -
图的最小生成树求法汇总
1.Prim原创 2014-07-18 15:39:55 · 1424 阅读 · 0 评论 -
pirm算法求最小生成树
#include #include #define MaxInt 0x3f3f3f3f #define N 110 //创建map二维数组储存图表,low数组记录每2个点间最小权值,visited数组标记某点是否已访问 int map[N][N],low[N],visited[N]; int n; int prim() { int i,j,pos,min,result=0; memset原创 2014-07-18 14:37:23 · 811 阅读 · 0 评论 -
数据结构之树的学习
在树中,对于任意节点n,n的深度为从根节点到n的唯一路径的 长。因此,根 的深度为零。n 的高度是从n到一片树叶的最长路径的长。因此所有的树叶的高都是0一棵树的高等于他的根的高. 一颗树的深度等于他的最深的树叶的深度,该深度总是等于这棵树的高. 树节点的声明 typedef struct TreeNode *PtrToNode; struct TreeNode { Elemen原创 2014-07-11 16:40:35 · 368 阅读 · 0 评论 -
数据结构学习之树---AVL树的实现
AVL 树是带有平衡条件的儿茶查找树。这个平衡条件必须要容易保持,而且必须保证书的深度是O(log N),最简单的想法是 要求左右子树具有相同的高度 另一种平衡条件是要求每个节点都唏嘘要具有相同的高度的做子树和右子树 定义:AVL树是其每一个节点的左子树和右子树的高度最多差1的二叉树(空树的高度定义为-1) AVL树节点的声明: #ifndef _AvlTree_h struc原创 2014-07-13 17:28:28 · 394 阅读 · 0 评论 -
数据结构学习之二叉堆
#ifndef _BinHeap_hstruct HeapStruct;typedef struct HeapStruct *PriorityQueue;PriorityQueue Initialize(int MaxElements);void Destroy(PriorityQueue H);void MakeEmpty(PriorityQueue H);void Insert(Element原创 2014-07-15 14:27:51 · 456 阅读 · 0 评论 -
图的表示及优先遍历
图的存储结构 1.邻接矩阵(无向图,有向图) 该结构实际上就是用一个二维数组(邻接矩阵)来存储 顶点的信息和顶点之间的关系(有向图的弧或无向图的边) 描述形式: #define MAX_NUM 10 enum GraphKind{GY,GN};//{有向图,无向图} typedef struct { VRType adj;// 顶点关系类型。对无权图,用原创 2014-07-17 18:08:27 · 479 阅读 · 0 评论 -
Huffman树实现
Huffman Tree的构建 赫夫曼树的构建步骤如下: 1、将给定的n个权值看做n棵只有根节点(无左右孩子)的二叉树,组成一个集合HT,每棵树的权值为该节点的权值。 2、从集合HT中选出2棵权值最小的二叉树,组成一棵新的二叉树,其权值为这2棵二叉树的权值之和。 3、将步骤2中选出的2棵二叉树从集合HT中删去,同时将步骤2中新得到的二叉树加入到集合HT中。转载 2014-07-14 16:01:03 · 472 阅读 · 0 评论 -
二叉树的遍历
先序遍历递归 void pre_traverse(BTree pTree) { if(pTree) { printf("%c",pTree->data); if(pTree->pLchild) pre_traverse(pTree->pLchild); if(pTree->pRchild) pre_traverse(pTree->pRchild); } } 中序遍历递归原创 2014-07-15 15:45:56 · 355 阅读 · 0 评论 -
数据结构学习之栈的两种实现方式
栈的实现 对空栈的POP和对满PUSH都是越界异常 两种实现方式: 表实现 数组实现 1。表实现: 栈ADT链表实现的类型声明 #ifndef _Stack_h struct NOde; typedef struct Node *PtrToNode; typedef PtrToNode Stack; int IsEmpty(Stack S); Stack C原创 2014-07-08 17:18:40 · 369 阅读 · 0 评论 -
计数,基数排序
计数排序 计数排序是建立在这样的前提条件下的:假设n个输入元素的每一个都是0到k区间内的一个整数,其中k为某个整数。因此我们后面所写的程序也只是针对0到k之间的元素进行排序, 换句话说,排序元素中不能有负数。 基本思想: 对一个输入元素x,先确定所有输入元素中小于x的元素个数,那么排序后x所在的位置也就明确了。比如,所有的输入元素中有10个元素小于x原创 2014-07-23 15:36:54 · 566 阅读 · 0 评论