
数据结构
ZGUIZ
这个作者很懒,什么都没留下…
展开
-
C语言顺序表的实现
顺序表的操作有初始化、插入元素、取值、查找元素、删除元素这五种操作。原创 2017-01-17 21:33:48 · 1494 阅读 · 0 评论 -
C语言弗洛伊德算法的实现
最短路径算法——弗洛伊德算法的实现原创 2017-01-21 10:50:27 · 5215 阅读 · 5 评论 -
C语言拓扑排序的实现
拓扑排序原创 2017-01-21 10:54:33 · 5905 阅读 · 2 评论 -
C语言克鲁斯卡尔算法的实现
克鲁斯卡尔算法的实现原创 2017-01-20 18:37:20 · 4596 阅读 · 4 评论 -
C语言二叉排序树的实现
二叉排序树是一种排序和查找都很有用的特殊二叉树。二叉树的性质:1. 若它的左子树不为空,则左子树上所有结点的值均小于它的根节点的值。2. 若它的右子树不为空,则右子树上所有节点的值均大于它的根节点的值。3. 他的左右子树也是二叉排序树。由于其以上性质,查找的时候只需要判断关键字与节点值的大小,查找器左右子树就可以找到所要找的值(当然,如果二叉树中没原创 2017-01-22 11:16:42 · 2686 阅读 · 4 评论 -
C语言哈夫曼树和哈夫曼编码的实现
哈夫曼树是一类带权路径(WPL)最短的的树。原创 2017-01-19 21:34:45 · 3413 阅读 · 0 评论 -
C语言设置监视哨的顺序查找、折半查找算法的实现
设置监视哨算法的实现也算是相当简单,和顺序查找的思路一样,但把查找数组a[]的第一个元素a[0]赋值为所要查找元素的值。下面是实现代码:int Search_Seq(int a[], int length, int key){ int i; a[0] = key; for (i = length; a[i] != key; i--) ; return i;}将要查找的值k原创 2017-01-22 11:12:52 · 6117 阅读 · 0 评论 -
C语言关键路径实现
在工程中,要估算工程完成最短时间,就是要找到一条从源点到汇点的带权路劲长度最长的路径,成为关键路径。确定关键路径的四个描述量:1. 事件vi的最早发生时间ve(i):进入世界vi的每一活动都结束,vi才有可发生,所以ve(i)是从源点到vi的最长路径长度。其中v0一般为0.2. 事件vi的最迟发生时间:事件vi的发生不得延误vi的每一后继事件的最迟发生时间。原创 2017-01-22 11:07:57 · 9068 阅读 · 9 评论 -
C语言直接插入排序和折半插入排序算法的实现
直接插入排序是是一种稳定的排序,其算法简便,适用于顺序结构和链式结构,更适合于基本有序(正序)的情况。其空间复杂度为O(1),时间复杂度为O(n2)。下面是实现算法:先是预定义和类型定义:typedef int Status;typedef int ElemType;typedef struct{ ElemType *data; int length;}SqList;创建原创 2017-01-22 11:34:03 · 7156 阅读 · 0 评论 -
C语言希尔排序的实现
希尔排序事实上是分组插入的方法,由于其受增量序列dt[]的影响,时间复杂度暂时未知,空间复杂度为O(1)。希尔排序是一种不稳定的算法,适用于顺序结构,不能用于链式结构,其增量序列可以有很多种取法,但应该使增量序列中的值没有除1之外的公因子,并且最后一个增量必须是1。适合用于初始无序、n值比较大的情况。首先是预定义和类型定义:#define OK 1#define ERROR 0#def原创 2017-01-25 12:21:52 · 914 阅读 · 0 评论 -
C语言冒泡排序的实现
冒泡排序是一种最简单的排序方法,通过比较相邻的元素,若发生倒序,则交换,使最大值“沉”到最后。其空间复杂度为O(1),时间复杂度为O(n2)。冒泡排序是一种稳定的排序,可可用于顺序或者链式存储结构,平均时间性能比直接插入差。当初始记录无序且n较大时,不宜采用此方法。首先是预定义和类型定义:#define OK 1#define ERROR 0typedef int ElemType;原创 2017-01-25 12:24:20 · 5127 阅读 · 0 评论 -
C语言快速排序算法的实现
快速排序是由冒泡排序改进而得的,相比冒泡排序,快速排序的一次交换可能消除多个逆序。其平均时间复杂度为O(nlog2n),空间复杂度最好情况下为O(log2n),最坏情况下为O(n)。适用于顺序结构,不适用于链式结构,不稳定,适合于初始记录无序,n比较大的情况。下面是实现代码:首先是预定义和类型定义:#define OK 1#define ERROR 0typedef int St原创 2017-01-25 12:30:11 · 716 阅读 · 0 评论 -
C语言简单选择排序算法的实现
简单选择排序从元素中跳出最小关键字,将其放在已排序列的最后,未排序的序列最前,直到全部排序完成为止,其空间复杂度为O(1),时间复杂度为O(n2)。下面是实现代码:首先仍然是预定义和类型定义:#define OK 1#define ERROR 0typedef int Status;typedef int ElemType;typedef struct{ ElemType *原创 2017-01-25 12:34:26 · 6961 阅读 · 0 评论 -
C语言归并排序算法的实现
归并排序是将两个或两个以上有序表合并成一个有序表的过程,其算法稳定,可以用于链式存储结构,且不需要附加储存空间,但递归时由于必须开辟相应的递归工作栈,故这个算法对内存要求较高。归并排序的时间复杂度为O(nlog2n),空间复杂度为O(n)。下面是实现代码:预定义和类型定义:#define OK 1#define ERROR 0#define MAXSIZE 100typedef原创 2017-01-25 12:36:42 · 2117 阅读 · 0 评论 -
C语言迪杰斯特拉算法的实现
最短路径算法——迪杰斯特拉算法的实现原创 2017-01-21 10:44:36 · 4437 阅读 · 0 评论 -
C语言普里姆算法的实现
普里姆算法原创 2017-01-20 18:30:51 · 12687 阅读 · 7 评论 -
C语言单链表基本操作
单链表的基本操作包括初始化、取值、查找、插入、删除、单链表的创建。原创 2017-01-17 21:33:50 · 1806 阅读 · 0 评论 -
C语言链栈的基本操作
链栈的基本操作主要包含四个操作:初始化、入栈、出栈、取栈顶元素。原创 2017-01-17 21:33:54 · 2032 阅读 · 0 评论 -
C语言顺序栈的基本操作
顺序栈的基本操作包括:初始化、入栈、出栈、取栈顶元素四个操作。原创 2017-01-17 21:33:56 · 2262 阅读 · 0 评论 -
C语言循环队列的实现
循环队列的操作包括初始化、求队列的长度、入队、出队、取队头元素。原创 2017-01-17 21:33:59 · 833 阅读 · 0 评论 -
链队的实现与操作
链队的操作包括初始化、入队、出队、取队头元素。原创 2017-01-17 21:34:02 · 903 阅读 · 0 评论 -
BF算法
BF算法是模式匹配算法中最直观的算法。原创 2017-01-17 21:34:05 · 857 阅读 · 0 评论 -
C语言二叉树的实现
二叉树的储存结构包含顺序存储结构和链式存储结构,由于顺序存储结构很容易造成不必要的浪费,本人用的是链式存储结构。基本操作包括:遍历二叉树、先序遍历的顺序建立二叉树、复制二叉树、计算二叉树深度、计算二叉树结点个数。原创 2017-01-19 20:39:10 · 831 阅读 · 0 评论 -
C语言KMP算法的实现
KMP算法在需要大量元素进行对比的时候比BF算法更为快速。原创 2017-01-19 20:47:55 · 768 阅读 · 0 评论 -
C语言邻接矩阵的实现
邻接表原创 2017-01-19 21:23:24 · 3755 阅读 · 2 评论 -
C语言线索二叉树的实现
线索二叉树的主要操作,包含:以p为根节点的子树中序线索化,带头结点的二叉树中序线索化和遍历线索二叉树这几个函数。原创 2017-01-19 20:56:29 · 2523 阅读 · 0 评论 -
C语言邻接表的实现
邻接表原创 2017-01-19 21:27:37 · 5073 阅读 · 1 评论 -
C语言非连通图的深度优先遍历
非连通图的深度优先遍历算法原创 2017-01-20 17:20:02 · 4995 阅读 · 0 评论 -
C语言非连通图广度优先遍历
广度优先遍历算法的实现原创 2017-01-20 17:25:40 · 2691 阅读 · 1 评论 -
C语言堆排序的实现
堆排序是一种树形选择排序,在排序过程中,将数组a[]看成一棵完全二叉树,利用双亲节点和孩子节点之间的内在关系,在当前无序的序列中选择关键字最大(或最小)的排序。其空间复杂度为O(1),在最坏的情况下时间复杂度为O(nlog2n)。堆排序是一种不稳定的算法,且只能用于顺序结构,不能用于链式结构;初始建堆所需的比较次数较多,因此记录少的时候不宜采用。堆排序在最坏情况下的时间复杂度比快速排序下最坏的时间原创 2017-01-25 12:40:09 · 1492 阅读 · 0 评论