数据结构
知了112
记录自己成长每一步。加油!
展开
-
[数据结构]栈
以下是用C语言实现的一个栈的结构:定义一个节点结构typedef struct Node{ int data; struct Node*p;}NODE,*PNODE;定义栈的结构体typedef struct Stack{ PNODE top; PNODE bottom;}STACK,*PSTACK;对栈的初始化函数void initStac原创 2014-03-03 20:26:34 · 661 阅读 · 0 评论 -
[数据结构]单链表反转
点击打开链接37 LinkList reverse_link(LinkListlist)38 {39 if(NULL == list40 || NULL == list->next)41 return list;424344 LinkList temp,prev,next;4546 prev = list转载 2014-04-04 13:34:27 · 722 阅读 · 0 评论 -
[数据结构]hash算法
hash函数hash函数主要是利用了数组的快速定位特性,以及键值根据哈希函数来转换。hash函数:根据key,计算出key对应记录的储存位置,position = f(key),不同的输入可能对应同样的输出。hash函数的冲突处理:链地址法:对Hash表中每个Hash值建立一个冲突表,即将冲突的几个记录以表的形式存储在其中问题实例:海量数据分析以下代码转自点击打开链接#in原创 2014-02-24 10:18:31 · 732 阅读 · 0 评论 -
[数据结构]二叉树
(1)二叉树的概念 二叉树(Binary Tree)是个有限元素的集合,该集合或者为空、或者由一个称为根(root)的元素及两个不相交的、 被分别称为左子树和右子树的二叉树组成。当集合为空时,称该二叉树为空二叉树。 满二叉树: 在一棵二叉树中,如果所有分支结点都存在左子树和右子树,并且所有叶子结点都在同一层上,这样的一棵二叉树称作满二叉树。 完全二叉树:一棵深度为k的有n个结点的二原创 2014-03-03 20:05:18 · 651 阅读 · 0 评论 -
[数据结构]红黑树
二叉搜素树(一)概念一个二叉搜索树是一个节点有序的二叉树,(1)根的左分支节点值都小于根节点的值(2)右分支节点值都大于根节点值(3)所有子树也都是二叉搜索树自平衡二叉搜索树平衡二叉树:一个所有叶子节点的深度差不超过1的二叉搜索树自平衡二叉搜索树:是指其操作都试图维持平衡的二叉搜索树红黑树红黑树是一种自平衡二叉搜索树,红黑树有以下特性:原创 2014-03-04 19:55:57 · 746 阅读 · 0 评论 -
[数据结构]各种排序算法比较
1,各种排序算法比较原创 2014-10-27 14:38:57 · 585 阅读 · 0 评论 -
[数据结构]——桶排序
一,桶排序以下代码转自:桶排序转载 2014-11-13 19:40:25 · 799 阅读 · 0 评论 -
[数据结构]快速排序
代码如下:static int LookBase(int *src,int lef,int rig){ DEBUG(); int i,l,r; l = lef; r = rig; int base = src[l]; while(l < r) { while((l=base)) { r--; } src[l] = src[r]原创 2014-02-24 09:31:41 · 556 阅读 · 0 评论 -
[LINUX内核编程]学习笔记(一)
linux内核使用bitmap相关 1,声明一个bitmap数组,可以表示100个bit,数组名字是bitmap DECLARE_BITMAP(bitmap,100) 相关宏定义如下: #define DECLARE_BITMAP(name,bits) unsigned long name[BITS_TO_LONGS(bits)] #define BITS_TO_LONG原创 2014-05-26 14:42:07 · 1017 阅读 · 0 评论 -
[LINUX内核编程]学习笔记(二)
linux内核————队列原创 2014-11-04 19:34:20 · 837 阅读 · 0 评论 -
[数据结构]双链表
typedef struct NODE{ struct NODE *fwd; struct NODE *bwd; int value;}Node;双链表的根节点的bwd指针指向双链表的最后一个节点,fwd指针指向双链表的第一个节点,双链表的value字段为空以下程序是将一个值插入到一个有序的双链表中,如果链表中已经有和该值相同的节点则不插入#include #inc原创 2014-02-25 19:09:55 · 820 阅读 · 0 评论 -
归并排序
归并排序点击打开链接//将有二个有序数列a[first...mid]和a[mid...last]合并。 void mergearray(int a[], int first, int mid, int last, int temp[]) { int i = first, j = mid + 1; int m = mid, n = last;转载 2014-03-28 15:35:16 · 568 阅读 · 0 评论 -
[数据结构]利用位图排序
#include #include #define INT_BY_BIT 32#define MASK 0x1F#define SHIFT 5#define N 1000000int a[N/INT_BY_BIT+1];void set_bit(int x) {a[x>>SHIFT] |= 1 << (x & MASK);}void clear_bit(原创 2014-04-01 11:07:18 · 728 阅读 · 0 评论 -
[数据结构]二分查找
1,二分查找:转载 2014-04-19 15:48:38 · 997 阅读 · 0 评论 -
[数据结构]冒泡排序
1,冒泡排序void bubblesort(int r[],int n) { /*elements are stored in r[1] to r[n]*/ int i,j,flag; int temp; flag=1; i=1; while((i<n)&&(flag==1)) /*外循环控制排序的总趟数*/ { flag=0;原创 2014-04-19 15:07:53 · 692 阅读 · 0 评论 -
编程珠玑:变位词程序的实现
编程珠玑,变位词的实现变位词的实现转载 2014-04-10 10:19:54 · 605 阅读 · 0 评论 -
[数据结构]一些常见的算法思想
1,分治思想计算输入向量中任何连续子向量中的最大和。[31,-41,59,26,-53,58,97,-93,-23,84]直接算法:分治思想:将向量分解为两个子向量,求解每个向量最大和,或者最大值在子向量a和子向量b的边界处float maxsum3(l,u)if(l > u)return 0if(l == u)return max(0,x[1])m原创 2014-06-23 20:14:20 · 1701 阅读 · 0 评论 -
[数据结构]计数排序
一,计数排序原创 2014-07-22 14:11:10 · 818 阅读 · 0 评论 -
[数据结构]如何节省程序空间
数据结构---如何节省空间1,稀疏矩阵http://blog.csdn.net/zhuyi2654715/article/details/6820201定义:对于那些零元素数目远远多于非零元素数目,并且非零元素的分布没有规律的矩阵称为稀疏矩阵(sparse)。如果矩阵中每一个点都用数组方式表示,那么会浪费很大的空间,因为大部分矩阵中的点的值都为0,因此可以采用一个一维数组表示n列,原创 2014-07-21 19:49:51 · 1361 阅读 · 0 评论 -
[数据结构]一些有意思题目(一)
1,求两个数的最大公约数int gcd(int i,int j){ while(i != j) { if(i > j) { i -= j; } else { j -= i; } }}2,将abcdefg 字符串向左移动三位变成 defgabc方法: 第一步:abcdefg ---> cbadefg 第二步:原创 2014-04-04 17:40:50 · 1228 阅读 · 0 评论 -
[数据结构]堆排序
1,堆排序概念点击打开链接点击打开链接堆排序与快速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法一般都用数组来表示堆,i结点的父结点下标就为(i – 1) / 2。它的左右子结点下标分别为2 * i + 1和2 * i + 2。如第0个结点左右子结点下标分别为1和2推的插入与删除堆的插入:每次插入都是将新数据放在数组最后堆的删除:按定原创 2014-04-19 15:08:12 · 685 阅读 · 0 评论 -
[数据结构]顺序单链表插入
一,单链表插入操作原创 2014-11-07 17:12:16 · 1691 阅读 · 0 评论