
数据结构
文章平均质量分 80
coFinder
hard working & 2 be No.1
展开
-
基于栈结构的迷宫搜索算法,数据结构
原理在数据结构书本(严蔚敏)上面将的很清楚了,通过一个方向标识符来进行方向的搜索: stackmaze.h#include #define INIT_STACK_SIZE 200#define INCREMENT_SIZE 100#define MAXSTEP 80#define N 10typedef struct SEAT{ int x;原创 2012-07-31 16:40:04 · 740 阅读 · 0 评论 -
难以想象的排序效率:希尔排序和插入排序的比较
最开始学习排序是冒泡排序,那时候以为排序总不过就是两两比较,然后交换值而已:今天突然想实现一线以前所有学过的排序算法,对10w级别以上的数组进行排序的时候,希尔排序和插入排序的效率简直不在一个数量级上的。 现在还有一个疑虑就是希尔排序的增量的确定的问题,我的方法是一个固定的增量区间,对排序的数组的元素个数 all = (int)log(size*4) + 1; //增量的个原创 2012-08-31 21:03:26 · 4250 阅读 · 0 评论 -
c++ 成员函数作为函数指针参数传入
在编写二叉树图形化演示程序的时候,要实现二叉树的前序,中序、后序遍历,遍历的时候传入一个函数指针来处理遍历到的节点 void XXXX::InOrder(TreeNode * Tree,int (*func)(TreeNode * Tree)){ if( ! Tree ) return ; InOrder(Tree->lchild,func); if ( !func原创 2012-08-19 18:56:22 · 14710 阅读 · 1 评论 -
数据结构:多项式链表的操作
包括对链表的冒泡排序,归并排序,链表的释放#include "stdio.h"typedef struct Elem{ double coeff; double exp;}Pair;typedef struct poly{ Pair data; struct poly *next;}*pPolyList,PolyLi原创 2012-07-18 19:20:20 · 968 阅读 · 0 评论 -
C语言数据结构之:顺序表的实现
#include #define INIT_MAX_SIZE 200#define INCREMENT_SIZE 100typedef struct SHUNXU{ int *data; int length; int listsize;}shunxu,*pshunxu;void initList(pshunxu elem)原创 2012-07-31 12:27:50 · 1299 阅读 · 0 评论 -
赫夫曼编码
#include "stdio.h"#define N 8typedef struct{ unsigned int weight;//节点权重 unsigned int parent,lchild,rchild;}HTNode,*HuffmanTree;typedef char ** HuffmanCode;int useable[N*2]={0};//原创 2012-07-21 22:32:23 · 941 阅读 · 3 评论 -
字符串的模式匹配:KMP算法
/* 2012-7-10,字符串的模式匹配:KMP算法*/#include char string[]="acabaababaabcacaabc";char mod[]="abaabc";int next[10]={0}; //通过模式串来计算得到next数组,里面记录的是在某个字符失配的时候从第几个重新开始void GetNext(char*s原创 2012-07-31 12:34:59 · 784 阅读 · 0 评论 -
C语言通用数据类型链表的实现,(数据域为指针,可指向任意类型数据)
可接受任意类型的数据的C语言链表 今天在宣讲会上讲了一下我所写的那个可以接收任意类型的参数类型的链表,感觉还是没有讲清楚,再次整理一下 ,同样的道理我们可以构造出其它的可以接受任意数据类型的结构,如:可接收任意数据类型的栈,可接收任意数据类型的队列,可接收任意数据类型的树················· 现在我们要在链表中存储任意类型的数据(也原创 2012-07-25 19:33:55 · 14800 阅读 · 5 评论 -
STL:map的入门体验+algorithm
#define ISNUM -30#define NOTNUM -50double atof(const char *);double gd[100]={0};char gc[100]={0};int id = 0,ic = 0 ;void pushD(double data){ gd[id++] = data;}int popD(double * data){原创 2012-07-31 12:58:38 · 610 阅读 · 0 评论 -
基于栈运算的算术表达式(纠错判错)
#define ISNUM -30#define NOTNUM -50double atof(const char *);double gd[100]={0};char gc[100]={0};int id = 0,ic = 0 ;void pushD(double data){ gd[id++] = data;}int popD(double * data){原创 2012-08-13 20:04:28 · 654 阅读 · 0 评论 -
以二叉排序树建立双向链表(两种规则,递增、递减)
上次写了一个二叉树的创建的程序,代码思想基本都是数据结构书本上的,后面看到另外一个人的博客 用java实现了一个二叉排序树的转换为双向链表的程序,代码之多吓我一跳,后面想想用递归的方法从二叉树的基础上按照某种方式建立双向链表,代码量应该不是很多。 #define EQ(x,m) ( x == m ? 1 : 0)#define LT(x,m) ( x < m ? 1 : 0)原创 2012-08-11 21:49:35 · 1525 阅读 · 0 评论 -
二叉排序树的建立和树中节点的查找删除操作
#define EQ(x,m) ( x == m ? 1 : 0)#define LT(x,m) ( x < m ? 1 : 0)typedef int Element;typedef struct tag_Tree{ Element data; struct tag_Tree * lchild; struct tag_Tree * rchild;}*BiT原创 2012-08-10 17:31:50 · 988 阅读 · 0 评论 -
基于广义表的算术表达式的实现
看过数据结构书上有个算术表达式的实现,觉得实现比较麻烦,用到了队列,栈还有一个难以建立的运算符优先级比较表,在最初看那个本书的时候写了估计一天,最近又在重新温习数据结构,再看打那个表达式的时候,突然想到可以用广义表通过递归建立和运算得到运算结果,实现起来感觉思想上还是比较容易理解的,可能是算法的基础还有有点薄弱,下面的代码几乎写了6个小时,弱爆了。 写的时候发现原创 2012-08-01 19:10:28 · 1913 阅读 · 1 评论 -
快速排序的三种写法的效率比较
最近在复习排序和查找算法的时候,回想算法课程和数据结构课程上面各种写法,总结一下,顺便比较了一下它们之间的效率, 另《外数据结构》书本上阐述,如果比较的枢纽值不是第一个或者最后一个而是 a[low] ,a[high],a[(high+low)/2] 的中间值,效率还会好很多,但是我在实现的过程中,总是搬移到了错误的位置,没有实现 #include #include原创 2012-09-02 20:26:43 · 2678 阅读 · 0 评论