算法学习积累
文章平均质量分 71
Arvon_阿文
跋山涉水
展开
-
采用队列实现自底向上链表归并排序
源代码如下:#include #include typedef struct node *link;struct node{ int item ; link next;}; typedef struct QUEUEnode* queue;struct QUEUEnode{ link item ; queue next;};static queue head , ta原创 2015-08-16 22:06:09 · 723 阅读 · 0 评论 -
利用优先队列实现堆排序(自顶向下自底向上堆化完全二叉树的运用)
源代码如下:#include #include typedef struct Item *node;struct Item{ int data; char c;};static Item *pq;static int N ;void swap(Item &a,Item &b){struct Item t = a;a = b;b = t;}void PQinit(i原创 2015-08-17 17:26:51 · 2531 阅读 · 0 评论 -
基于堆的优先队列
源代码如下#include #include typedef struct Item *node;struct Item{ int data; char c;};static Item *pq;static int N ;void swap(Item &a,Item &b){struct Item t = a;a = b;b = t;}//自底向上堆化 完全二叉树原创 2015-08-17 17:31:01 · 545 阅读 · 0 评论 -
双链表优先队列ADT的实现与测试
源代码如下:#include #include typedef struct pq* PQ;typedef struct PQnode* PQlink;struct Item{int data;char c;};struct PQnode{Item key;PQlink prev,next;};struct pq{PQlink head,tail;};PQ PQinit原创 2015-08-17 22:46:15 · 1077 阅读 · 0 评论 -
二项队列的查找插入合并操作
源代码如下:/*一棵二次幂堆是一棵左有序的堆,由右子树为空左子树为完全二叉树构成的根组成二项队列:是二次幂堆的一个集合。 其中不存在相等大小的堆。其结构由队列节点数目确定 对应整数的二进制表示。 */ #include #include #define maxBQsize 40typedef struct PQnode* PQlink;typedef struc原创 2015-08-18 11:53:04 · 1910 阅读 · 0 评论 -
基数排序之多关键字排序运用队列
源代码如下:#include #include typedef struct QUEUEnode* link;struct QUEUEnode{ int item ; link next; link head , tail;};link NEW(int item, link next){ link x = (link) malloc(sizeof *x); x->ite原创 2015-08-19 08:54:19 · 1677 阅读 · 0 评论 -
基于二叉搜索树的符号表和BST排序
原代码如下:#include #include //#define Key inttypedef int Key;struct Item{ Key key; char c;};typedef struct STnode* link;struct STnode{ Item item ; link l,r; int N;};static link head , z原创 2015-08-19 15:18:48 · 671 阅读 · 0 评论 -
红黑树的插入操作
红黑树是2-3-4树的一个变体 #include #include //#define Key int#define hl h->l#define hr h->r#define hlr h->l->r#define hll h->l->l#define hrr h->r->r#define hrl h->r->ltypedef char Key;struct Ite原创 2015-08-20 23:13:57 · 488 阅读 · 0 评论 -
二叉搜索树的根插入、选择、删除、合并、排序等操作的实现
源代码如下:这里的Key 不当为关键字对待, 而是把Item.c作为关键字对待#include #include //#define Key inttypedef int Key;struct Item{ Key key; char c;};typedef struct STnode* link;struct STnode{ Item item ; li原创 2015-08-20 09:20:31 · 1580 阅读 · 0 评论 -
二叉搜索树的随机化插入和伸展插入操作(平摊法)
源代码如下:#include #include //#define Key int#define hl h->l#define hr h->r#define hlr h->l->r#define hll h->l->l#define hrr h->r->r#define hrl h->r->ltypedef int Key;struct Item{ Key key; c原创 2015-08-20 11:40:12 · 781 阅读 · 0 评论 -
Skip list -- 跳跃表的插入删除搜索等ADT操作的实现与测试
源代码如下:#include #include #define lgNmax 5typedef char Key;struct Item{Key key;};typedef struct STnode* link;struct STnode{ Item item ; link *next; //多个链接域组成的数组 int sz ; // 该节点的链接数原创 2015-08-21 22:56:56 · 1292 阅读 · 0 评论 -
由线性的List生成树状的List,森林的生成算法-Java实现
一下是源代码package com.arvon.json1.bean;import java.util.ArrayList;import java.util.List;/** * 森林生成的算法 *@author Huangwen *@time 2017-1-23 */public class TreeNode { private int id ; priv原创 2017-01-23 14:55:03 · 555 阅读 · 0 评论 -
希尔排序算法和快速排序算法
希尔排序源代码如下:#include //希尔排序 void shellSort(int a[],int l, int r){ //一次排序同一步长所组成的集合 如a[0],a[5],a[10]... int i,j,h; for(h=1;h<=(r-1)/9;h=3*h+1); //设置步长为1,4,13,40,121,...序列 for( ; h>0;h/=3) f原创 2015-08-16 10:43:52 · 667 阅读 · 0 评论 -
图的最小生成树之普里姆Prim算法
源代码如下:#includeusing namespace std;#define MAX_VERTEX_NUM 20#define infinity 9typedef int QElemType; typedef int EdgeData;typedef char VertexData;typedef struct { VertexData verlist[M原创 2015-08-15 15:57:07 · 1064 阅读 · 0 评论 -
散列技术之链地址法(基于无序链表)
源代码如下:#include #include #define hash(v,M) (v % M)typedef char Key;struct Item{ Key key;};typedef struct STnode* link;struct STnode{ Item item ; link next;};static link* heads , z ;stat原创 2015-08-22 14:33:22 · 664 阅读 · 0 评论 -
散列技术之线性探测法
源代码如下:#include #include #define hash(v,M) (v % M)#define null(A) (key(st[A]) == key(NULLitem)) typedef char Key;struct Item{ Key key;};static struct Item NULLitem ;static struct Item *s原创 2015-08-22 16:21:47 · 1201 阅读 · 0 评论 -
约瑟夫环问题 循环链表
#include #include typedef struct node *link;struct node{ int item ; link next;}; void josephus(int n, int m){ int i ; link head = (link) malloc(sizeof (link) ), x = head ; head -> item = 1;原创 2015-08-10 21:24:56 · 446 阅读 · 0 评论 -
抛硬币的模拟
#include #include int heads(){ return rand() < RAND_MAX/2;} main(int argc, char *argv[]){ int i , j , cnt; int n = atoi(argv[1]) , m = atoi(argv[2]) ; int *f = (int *)malloc((n+1)*sizeof(in原创 2015-08-10 21:29:15 · 2969 阅读 · 0 评论 -
链表插入排序
#include #include typedef struct node *link; struct node{ int item ; link next;}; void visitData(link x){ link t; for( t=x ; t != NULL ; t = t -> next) printf("%d\n",t->item);}void cre原创 2015-08-11 21:28:28 · 397 阅读 · 2 评论 -
后缀表达式 栈的运用
中缀表达式转 后缀表达式#include #include #include typedef struct STACKnode* link;struct STACKnode{ char item ; link next;};static link head ;link NEW(char item, link next){ link x = (link) malloc(s原创 2015-08-12 10:54:13 · 405 阅读 · 0 评论 -
费波纳契数d动态规划实现
#include static int record[40]={0};void count(int n){ record[0]=1; record[1]=1; for(int i=2;i<n;i++) record[i]=record[i-1]+record[i-2];}main(){ count(20); for(int i=0;i<20;i++) printf("原创 2015-08-12 19:36:23 · 479 阅读 · 0 评论 -
二叉树的建立以及先序中序后序递归遍历
#include #include #define ElemType chartypedef struct BiTNode *BiTree;struct BiTNode{ ElemType data; BiTree lchild,rchild;};BiTree CreateBiTree(){ ElemType ch; BiTree T; scan原创 2015-08-12 21:02:18 · 551 阅读 · 0 评论 -
二叉树的非递归前序遍历
#include #include #define ElemType chartypedef struct BiTNode *BiTree;struct BiTNode{ ElemType data; BiTree lchild,rchild;};typedef struct STACKnode* link;struct STACKnode{ BiTree ite原创 2015-08-12 21:35:57 · 446 阅读 · 0 评论 -
二叉树的层次非递归遍历运用队列
#include #include #define ElemType chartypedef struct BiTNode *BiTree;struct BiTNode{ ElemType data; BiTree lchild,rchild;};BiTree CreateBiTree(){ ElemType ch; BiTree T; scan原创 2015-08-13 13:44:52 · 764 阅读 · 0 评论 -
图的深度优先遍历递归算法主针对邻接表有向图
以下是源代码:#includeusing namespace std;#define MAX_VERTEX_NUM 20typedef int EdgeData; typedef char VertexData; //顶点数据域 typedef struct node { // 边表节点 EdgeData cost; //边上d权值 int adjvex原创 2015-08-15 09:00:56 · 2760 阅读 · 2 评论 -
图的广度优先遍历算法运用队列主针对邻接表有向图
源代码如下:#includeusing namespace std;#define MAX_VERTEX_NUM 20typedef int EdgeData; typedef char VertexData; //顶点数据域 typedef struct node { // 边表节点 EdgeData cost; //边上d权值 int adjvex;原创 2015-08-15 10:06:23 · 2728 阅读 · 0 评论 -
埃拉托色尼筛算法
#include void sushu(int N){int i, j, a[N];for(i=0;ifor (i=2;iif(a[i])for(j = i ; i * j for (i=2;iif(a[i])printf("%6d",i);}main(){sushu(10000);}原创 2015-08-10 12:09:21 · 650 阅读 · 0 评论