Posts Tagged ‘数据结构’

2013/02/22

跳表(skiplist) 是一个非常有趣的、简单的数据结构, 应用也非常广泛, 著名的NoSQL内存数据库Redis, 就用到了skiplist作为排序集合的基础数据结构。 跳表最大的特点就是插入、删除操作的性能均为O(logn) 。 关于它的原理网上有一大堆,如果不了解的话,可以先看看文章末尾的【参考资料】, 或者动手google一下。 正好这里也有一篇我觉得写的不错的文章, 可以猛击此处 。

Tags: ,. 30,294 views
2009/08/14

排序算法演示

Tags: ,. 3,923 views

这是上实验课的时候做的,代码里一个多项式的结构体定义用了两个链表,真的的很烦,不过这不能怪我, 我是严格按照我国著名大学、著名教授——清华大学严蔚敏老师的《数据结构》里定义的数据结构照抄的 我个人觉得这种写法很烦,完全没有必要,把简单的一个数据结构复杂化了. 发了一些牢骚,下面贴代码. 001 #include<stdio.h> 002 #include<malloc.h> 003 typedef struct Node 004 { 005     int xs; 006  007     int zs; 008     struct Node *next; 009 }; 010 typedef struct LinkList 011 { 012    struct Node *front,*rear; 013  014 }; 015 //Initial 016 void InitList(struct LinkList *p) 017 { 018    p->front=(struct Node*)malloc(sizeof(struct Node)); 019    p->front->next=NULL; 020    p->rear=p->front; 021 } 022 //Push […]

Tags: ,,. 2,764 views

迷宫的游戏规则想必大家都会吧,我就不多说了,直接看代码吧! C语言: /* *  Author: Wang Runzhen *  Date  : 2009 年 8 月 14 日 */ #include<iostream> #include<fstream> using namespace std; //用于保存行走路线 struct Stack { int info[50][3]; int point; }; //初始化栈 void InitStack(Stack*s) { s->point=-1; } //入栈 void PushStack(Stack*s,int x,int y,int d) { s->point++; s->info[s->point][0]=x; s->info[s->point][1]=y; s->info[s->point][2]=d; } //出栈 void PopStack(Stack*s,int &d) { d=s->info[s->point][2]; […]

Tags: ,,. 2,432 views

终于终于,我把图的DFS、BFS两个遍历算法仅仅是看懂了!! 两个星期啊!我就干了这个事。 难道我的智商真的没有我想象中的那么高? 废话少说,以下代码是我自己打的,虽然代码网上都有很多类似的,但很多都没有注释,初学者(像我)就很难理解 所以我自己写了一些注释,也算为大家服务一下,别像我那样不理解代码以至花了很多功夫。 /* *  Author : Wang Runzhen *  Date   : 2009年,具体不详 */ #include<iostream> using namespace std; const int MAX=20; //定义一个图 struct Graph { int vertex[MAX];//顶点数组 int relate[MAX][MAX];//顶点邻接矩阵 int vnum;//顶点个数 }; //创建一个图 void CreatGraph(Graph *g,int n) { int i,j,v; g->vnum=n; // 创建n个顶点 for(i=1; i<=n; i++) g->vertex[i]=i; //建立邻接矩阵 for(i=1; i<=n; i++) { […]

Tags: ,. 8,356 views

与前面那一个贴子的深度算法类似,我自己加了一些注释。 /**  Author : Wang Runzhen*  Date   : 2009年,具体不详**/ #include<iostream>using namespace std;const int MAX=20;//定义一个图struct Graph{    int vertex[MAX];//顶点数组    int relate[MAX][MAX];//顶点邻接矩阵    int vnum;//顶点个数}; //创建一个图void CreatGraph(Graph *g,int n){    int i,j,v;    g->vnum=n;// 创建n个顶点    for(i=1; i<=n; i++)        g->vertex[i]=i;//建立邻接矩阵    for(i=1; i<=n; i++)    {        for(j=1; j<=n; j++) […]

Tags: ,,. 15,904 views

请注意栈的一些易错的地方,特别是pushStack(),popStack()的声明和定义!!! #include<iostream> using namespace std; const int MAX=10; struct Stack { int data[MAX]; int top; }; //initial void initStack(Stack *s) { s->top=-1; } //empty int Stackempty(Stack *s) { if(s->top==-1) return 1; else return 0; } //取栈顶元素 void Stacktop(Stack *s,int &x) { if(Stackempty(s)) cout<<“\n栈为空!\n”; else x=s->data[s->top]; } //pushstack void pushStack(Stack *s,int x)//不需要引用 { if(s->top==MAX-1) cout<<“\n栈已满!\n”; else { s->top++; […]

Tags: . 1,803 views

上实验课的时候做的,把“结构体”和“链表”和“类”联系到了一块,第一次这样做. 有什么不足的地方还请高手指教! 题目: [实现要求] 利用上一实验设计的链表结构存放队列类中的队列元素。也即队列元素的空间是动态申请的。 在构造队列对象时,初始化该链表,在析构队列对象时,释放链表所占的空间。 C语言: 高亮代码由发芽网提供 /** Author: Wang Runzhen* Date  : 2009 年 8 月 14 日*/ #include<iostream>using namespace std;struct List{    int n;    struct List *next;}; class Queue{private:    int count;    List *p,*head,*pNext,*die;public:    Queue()    {        count=0;        p=new List;       […]

Tags: ,,. 2,542 views