数据结构
文章平均质量分 78
CNnumen
If i want , i must try...
展开
-
堆栈的push, pop操作...
<br />#include <cstdlib>#include <iostream>using namespace std;typedef struct _NODE{ int value; struct _NODE *next; _NODE(int value) : value(value), next(NULL){};}NODE, *PTRNODE;void push(PTRNODE &top, int val){原创 2010-07-11 15:58:00 · 6262 阅读 · 0 评论 -
10个经典的字符串hash函数的C代码实现
<br /> <br />所有内容均来自于:http://www.partow.net/programming/hashfunctions/<br />以下总共给出了10种字符串hash函数,在上面的链接中可以找到各个Hash函数的描述,以及一些其它的关于hash函数的资料下载。<br />这些hash函数各自的优缺点不详。其中,ELFHash函数是在unix系统中被广泛使用的,也是《算法艺术与信息学竞赛》中作者推荐的一个字符串hash函数。DEKHash函数是Knuth在其《The Art of Comp转载 2010-07-30 22:20:00 · 1236 阅读 · 0 评论 -
直接插入排序。。。
<br />#include <cstdlib>#include <iostream>#include <ctime>#include <algorithm>using namespace std;const int MAX = 500;const int COUNT = 10;void display(int value[], int count){ for(int i=0; i<count; i++) cout << value[i] << "原创 2010-07-30 09:36:00 · 591 阅读 · 0 评论 -
堆排序实现...
<br />#include <cstdlib>#include <iostream>#include <algorithm>#include <ctime>using namespace std;const int MAX = 100;void filerDown(int heap[], int start, int end){ int i = start; int j = 2 * i + 1; int temp = heap[i];原创 2010-07-29 11:54:00 · 622 阅读 · 0 评论 -
堆的建立, 元素插入, 删除的实现...
<br />#include <cstdlib>#include <iostream>#include <algorithm>#include <ctime>#include <vector>using namespace std;const int MAX = 200;void filerDown(int heap[], int start, int end){ int i = start; int j = 2 * i + 1; int tem原创 2010-07-29 11:22:00 · 1848 阅读 · 0 评论 -
迷宫问题...
<br />#include <cstdlib>#include <iostream>#include <fstream>#include <vector>#include <iterator>#include <algorithm>using namespace std;const int NODE_COUNT = 6;vector<int> traceVec;int visit[NODE_COUNT + 1] = {0};typedef struct _NODE原创 2010-07-25 22:54:00 · 615 阅读 · 0 评论 -
有序链表的合并(递归实现)
<br />#include <cstdlib>#include <iostream>#include <vector>#include <ctime>#include <algorithm>using namespace std;typedef struct _NODE{ int data; struct _NODE *next; _NODE(int val): data(val), next(NULL){} fr原创 2010-07-21 16:09:00 · 767 阅读 · 0 评论 -
中缀表达式转后缀表达式并计算后缀表达式的值...
中缀表达式转后缀表达式思路: 首先给用到的每个操作符如'+', '-', '*', '/'等按照他们原本的计算优先级定义两个代表优先级的数值, 如inStackPri代表入栈之后的优先级, outStackPri代表入栈之前的优先级... 然后扫描表达式, 如果是数字, 直接输出, 如果是操作符, 则用这个操作符的outStackPri值和栈顶的操作符的inStackPri进行比较, 如果小于, 则将栈顶的操作符出栈并输出, 之后再次将outStackPri和栈顶操作符的inStackPri比较原创 2010-07-21 14:38:00 · 1138 阅读 · 0 评论 -
寻找链表中间节点-一种高效的算法
<br />链表(特别是单链表)的定位是链表这种数据结构的一个软肋所在,定位某一个元素你<br /><br />就不得不通过遍历的方式获得。如果要寻找一个单链表的中间节点,普通的方法就是先遍历得到链表的长度,然后再通过长度遍历得到链表的中间节点。当然有一些链表通过一个特殊的头节点记录链表的长度的情况,可能要简单一些。<br /><br /> 前一段时间,在看链表的归并排序的时候,就不得不面临着寻找链表中间节点的问题。这里给出一种实现,很可能是大家想不到的:):<br /><br />1) 使用两转载 2010-07-14 14:35:00 · 6072 阅读 · 2 评论 -
二叉搜索树的建立, 查找, 删除操作...
#include #include using namespace std;typedef struct _NODE{ int value; struct _NODE *left; struct _NODE *right; _NODE(int value) : value(value), left(NULL), right(NULL) {};}NODE, *PTRNODE;void insert(PTRNODE &root, in原创 2010-07-11 18:48:00 · 9629 阅读 · 1 评论 -
队列的enqueue, dequeue操作...
<br />#include <cstdlib>#include <iostream>using namespace std;typedef struct _NODE{ int value; struct _NODE *next; _NODE(int value) : value(value), next(NULL) {};}NODE, *PTRNODE;void enqueue(PTRNODE &head, PTRNODE &tail, i原创 2010-07-11 16:49:00 · 23160 阅读 · 0 评论 -
链表的插入,删除,逆置操作...
<br />#include <cstdlib>#include <iostream>using namespace std;int const MAX_VAL = 100;typedef struct _NODE{ int value; struct _NODE *next; _NODE(int value) : value(value), next(NULL){}; }NODE, *PTRNODE;PTRNODE inser原创 2010-07-11 15:12:00 · 1073 阅读 · 0 评论 -
红黑树
<br />红黑树百科名片红黑树红黑树是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。它是在1972年由Rudolf Bayer发明的,他称之为"对称二叉B树",它现代的名字是在 Leo J. Guibas 和 Robert Sedgewick 于1978年写的一篇论文中获得的。它是复杂的,但它的操作有着良好的最坏情况运行时间,并且在实践中是高效的: 它可以在O(log n)时间内做查找,插入和删除,这里的n 是树中元素的数目。<br />目录[隐藏]性质背景和术语转载 2010-08-11 16:44:00 · 836 阅读 · 0 评论