数据结构与算法笔记
hubi
每天收获多一点。
展开
-
最大子序列和
//maxSubsquenceSum.h#ifndef MAXSUNSQUENCESUM_H#define MAXSUNSQUENCESUM_H#include int maxSubsquenceSum(int *, int);#endif//maxSubsquenceSum.c#include "MaxSubsequenceSum.h"int maxSubsquen原创 2012-09-07 22:10:00 · 896 阅读 · 0 评论 -
回文小例子
#include #include #define MAX 100char* strrev(char* szT){ int k,j; if ( !szT ) // 处理传入的空串. return ""; int i = strlen(szT); int t = !(i%2)? 1 : 0; // 检查串长度. for(j = i-1原创 2012-09-25 21:21:03 · 1381 阅读 · 0 评论 -
生产者/消费者模式[3]:环形缓冲区
https://program-think.blogspot.com/2009/04/producer-consumer-pattern-3-circle.html转载 2016-06-21 14:42:04 · 466 阅读 · 0 评论 -
并发无锁队列学习之一【开篇】
http://www.cnblogs.com/Anker/p/3823572.html转载 2016-06-21 15:09:25 · 273 阅读 · 0 评论 -
循环队列
typedef struct _st_flow_spd_stat_que{ UINT4 que_size;//队列大小 UINT4 que_tail;//对尾 UINT4 que_head;//对头 UINT4 res1; UINT8 que_drop1;//队列满时,入队丢弃的数据个数 UINT8 que_drop2;//队列处理丢原创 2016-06-23 12:29:02 · 341 阅读 · 0 评论 -
HASH 双向链表前叉节点
typedef struct st_HASH_TAB { UINT4 hsize; void **tab; tMemPoolId *memid; tMutex *mutex;}HASH_TAB;INT1 flw_sav_add_upload_uc_msgno_bind(INT1 *p_us转载 2016-06-23 16:25:29 · 375 阅读 · 0 评论 -
整形的hash算法
//bits值越小用的hashtable的空间越小unsigned long hash_long(unsigned long val,unsigned int bits){ unsigned long hash = val * 0x9e370001UL; return hash >> (32 - bits);}int main(void){ int i,j = 8192; pri转载 2016-07-30 05:03:01 · 1321 阅读 · 0 评论 -
算法收集
七大查找算法(附C语言代码实现)http://www.cnblogs.com/leezx/p/5719012.html转载 2016-09-10 15:15:09 · 343 阅读 · 0 评论 -
区间树简单实现(interval_tree)
interval_tree.cpp/* 区间树(interval tree)是一种对动态集合进行维护的扩张红黑树,因此可在实验二红黑树的基础上进行扩张。*/ #include #include #include #include #include #include #define SENTINEL -100000 //哨兵,作为nil结点的key,方便树状输出时临转载 2016-10-09 16:49:02 · 5648 阅读 · 1 评论 -
归并排序算法解析(转)
转自:http://blog.csdn.net/yousir1988/article/details/7690543 归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。一次归并算法1、基本思路 设两个有序的子文件(相当于输入堆)放在同一向量中相邻的位置上:R[low转载 2013-01-15 21:42:14 · 850 阅读 · 0 评论 -
递归算法详细分析-> C (转)
转自:http://www.cnblogs.com/zhangqqqf/archive/2008/09/12/1289730.html C通过运行时堆栈支持递归函数的实现。递归函数就是直接或间接调用自身的函数。许多教科书都把计算机阶乘和菲波那契数列用来说明递归,非常不幸我们可爱的著名的老潭老师的《C语言程序设计》一书中就是从阶乘的计算开始的函数递归。导致读过这本经书的同学们,看到阶乘计转载 2013-01-15 21:09:18 · 575 阅读 · 0 评论 -
冒泡排序
#include #include void bubbleSort(int * arr, int size){ int i,j,temp; for (i = size; i > 1; i--)//扫描个数 for (j = 0;j < i - 1; j++)//找出最大值 { if (arr[j+1]<arr[j]) { temp = arr[j];原创 2012-10-03 13:44:03 · 801 阅读 · 0 评论 -
对分查找
//BinarySearch.h#ifndef BINARYSEARCH_H#define BINARYSEARCH_H #define NotFound -1#include int BinarySearch(int *, int , int );#endif//BinarySearch.c#include "BinarySearch.h"int BinarySe原创 2012-09-07 23:37:41 · 1532 阅读 · 0 评论 -
单链表-创建、插入、删除、查找、反转等操作
//list.h#ifndef _List_H#define _List_H#include #include #define NotFound NULL;typedef struct List { int value; struct Node * next;}Node;typedef struct List *pNode;typedef pNode pList原创 2012-09-08 13:04:34 · 2552 阅读 · 0 评论 -
单循环链表-创建、插入、删除、反转等操作
//list.h#ifndef _List_H#define _List_H#include #include #define NotFound NULL;typedef struct List { int value; struct Node * next;}Node;typedef struct List *pNode;typedef pNode pLi原创 2012-09-08 16:51:41 · 17247 阅读 · 1 评论 -
插入排序
#include #include //思想:将第一个元素定位,后面的元素与前面的元素依次比较,小于则插入在前面,再往前比较,类似查扑克牌void insertSort(char * arr, int size){ int i,j; char temp; for ( i = 1; i < size; ++i) { //定位,temp要找到合适的位置 temp = arr原创 2012-10-02 23:15:05 · 766 阅读 · 0 评论 -
选择排序
#include #include // 思路:从第一个元素开始,以后的每个元素比较,找出最小的与第一个元素交换,然后在从第二个开始,依次下去void selectSort(char * arr, int size){ int i,j,pos; char temp; for (i = 0; i < size; ++i) { /* code */ pos = i;//定位要原创 2012-10-02 22:29:18 · 642 阅读 · 0 评论 -
快速排序
转自:http://zhidao.baidu.com/question/48068982.html假设要排序的数组是A[1]……A[N],首先任意选取一个数据(通常选用第一个数据)作为关键数据,然后将所有比它的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一躺快速排序。一躺快速排序的算法是: 1)、设置两个变量I、J,排序开始的时候I:=1,J:=N; 2)以第一个数原创 2012-10-03 10:21:42 · 1115 阅读 · 0 评论 -
RBTree和AVLtree
https://www.zhihu.com/question/20545708https://www.zhihu.com/question/19856999转载 2016-10-11 13:45:20 · 901 阅读 · 0 评论