算法和数据结构
文章平均质量分 90
unix21
这个作者很懒,什么都没留下…
展开
-
B树建立与遍历
# include # include # include "btrees.h"/* 给一个结点分配空间 */struct btnode * allocateNode(struct btnode *ptr){ int i,max; ptr = (struct btnode *)malloc(sizeof(struct btnode)); if(!ptr){原创 2013-02-21 22:39:04 · 2265 阅读 · 1 评论 -
哈希函数原理及实现
《Self-Service Linux》http://book.douban.com/subject/2666819/ 机械工业出版社:计算机科学丛书电子工业出版社:国外计算机科学教材系列清华大学出版社:世界著名计算机教材精选国外经典教材·计算机科学与技术 国外计算机科学经典教材高等教育出版社:国外优秀信息科学与技术系列教学用书 中国电力出版社:国外经典计算机原创 2013-01-11 10:54:47 · 1948 阅读 · 0 评论 -
二叉树的建立与遍历
代码:/* Sorting integers using a binary tree */#include #include #include /* Function prototypes */struct Node *createnode(long value); /* Create a tree node */struct Node *add原创 2013-02-21 22:27:16 · 709 阅读 · 0 评论 -
HashTable原理与实现
Hashmap是一种非常常用的、应用广泛的数据类型,最近研究到相关的内容,就正好复习一下。网上关于hashmap的文章很多,但到底是自己学习的总结,就发出来跟大家一起分享,一起讨论。 1、hashmap的数据结构 要知道hashmap是什么,首先要搞清楚它的数据结构,在java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结构原创 2013-02-28 17:34:24 · 1067 阅读 · 0 评论 -
自己写的单链表
link.c#include #include #include #include #include "link.h"/** ** 这是一个计算HASH值的算法 **/int time33(char* arKey,int arlength){ int h = 0; int i; for(i=0;i<arlength;i++){原创 2013-03-04 22:25:16 · 556 阅读 · 0 评论 -
自己写的哈希表以及解决哈希冲突
哈希表就是键值key-value对,使用hash函数让key产生哈希值,当不同的key产生相同的哈希值时就是哈希冲突了,产生哈希冲突可以使用拉链法。hash.c#include #include #include #include "hash.h"static unsigned int table_size[] = {7, 13, 31, 61, 127, 251, 509原创 2013-03-10 20:31:25 · 1195 阅读 · 0 评论 -
说透一级指针和二级指以及(void**)&在双链表中的应用
void (*signal (int signo,void (*func) (int) )) (int)这一大堆看起来很难,其实仔细分析下不算很难搞。首先要明白一件事:这里都是从最基本的语法展开的。那么这里最基本的语法就是函数的声明:返回值 函数名(参数)。先将这一大堆给看成void (f)(int)也就是将*signal (int signo,void (*func) (in原创 2013-05-14 09:26:12 · 6158 阅读 · 0 评论 -
双链表的实现
一、在学习arm过程中发现这“指针函数”与“函数指针”容易搞错,所以今天,我自己想一次把它搞清楚,找了一些资料,首先它们之间的定义:1、指针函数是指带指针的函数,即本质是一个函数。函数返回类型是某一类型的指针 类型标识符 *函数名(参数表) int *f(x,y); 首先它是一个函数,只不过这个函数的返回值是一个地址值。函数返回值必须用同类型的指针变原创 2013-05-14 14:07:50 · 1017 阅读 · 0 评论 -
在A*寻路中使用二叉堆
在A*寻路中使用二叉堆作者:Patrick Lester(2003年4月11日更新)译者:Panic 2005年3月28日译者序: 这一篇文章,是“A* Pathfinding for Beginners.”,也就是我翻译的另一篇文章《A*寻路初探 GameDev.net 》的补充,在这篇文章里,作者再一次展现了他阐述复杂话题的非凡能力,用通俗易懂的语句清晰的解释了容易让翻译 2013-10-29 22:23:07 · 1664 阅读 · 0 评论 -
A*寻路初探
原文:Patrick Lester翻译:Panic 原文出处:A* Pathfinding for Beginners--------------------------------------------------------------------------------译者序 很久以前就知道了A*算法,但是从未认真读过相关的文章,也没有看过代码,只是脑子里有个模糊翻译 2013-10-29 22:10:48 · 871 阅读 · 0 评论 -
Trie树
Trie树也称字典树,因为其效率很高,所以在在字符串查找、前缀匹配等中应用很广泛,其高效率是以空间为代价的。一.Trie树的原理利用串构建一个字典树,这个字典树保存了串的公共前缀信息,因此可以降低查询操作的复杂度。下面以英文单词构建的字典树为例,这棵Trie树中每个结点包括26个孩子结点,因为总共有26个英文字母(假设单词都是小写字母组成)。则可声明包含Trie树的结点信息的结构体原创 2013-03-15 22:57:38 · 957 阅读 · 0 评论 -
位图排序
位图排序是一种效率极高(复杂度可达O(n))并且很节省空间的一种排序方法,但是这种排序方法对输入的数据是有比较严格的要求(数据不能重复,大致知道数据的范围)。位图排序即利用位图或者位向量来表示集合。举个例子,假如有一个集合{3,5,7,8,2,1},我们可以用一个8位的二进制向量set[1-8]来表示该集合,如果数据存在,则将set相对应的二进制位置1,否则置0.根据给出的集合得到的set为{1,原创 2013-03-15 23:29:19 · 662 阅读 · 0 评论 -
深入浅出理解Paxos算法
Paxos算法是莱斯利·兰伯特(英语:Leslie Lamport,LaTeX中的「La」)于1990年提出的一种基于消息传递且具有高度容错特性的一致性算法。Paxos算法一开始非常难以理解,但是一旦理解其实也并不难,之所以难理解其实是因为作者讲的故事难理解。Paxos算法维基百科https://en.wikipedia.org/wiki/Paxos_(computer_science原创 2016-02-19 20:08:38 · 1599 阅读 · 0 评论