摘要:
在数据结构书上,对于B-树的介绍只有部分算法,有点吃力,百度看到一篇介绍B-树的博文,花了较长的时间理解,还有些生疏,把代码暂存,代码来自http://blog.csdn.net/chenhuijie666/article/details/8662554 1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<math.h> 4 #define m 3//B-的阶 5 #define MAX 5//字符串最大长度 6 #define N 16 7 typedef int KeyType; 8 9 struct 阅读全文
摘要:
实现二叉排序树的搜索,插入,删除。代码如下: 1 //#define int ElemType 2 #include<stdio.h> 3 #include<stdlib.h> 4 5 //#define int KeyType 6 typedef struct BiTNode{ 7 int data; 8 struct BiTNode *lchild,*rchild; 9 }BiTNode,*BiTree; 10 bool SearchBST(BiTree T,int key,BiTree f,BiTree &p) 11 { 12 if(!T) 13... 阅读全文
摘要:
今天上午上课时,再看了下Hanoi塔的问题,其中对递归的分析,让自己对递归调用有了更深一步地理解,把书上的代码实现一下,然后分析其递归工作栈的状态,理解了以后,会让自己受益颇多。学习,不能只看着别人是怎么写的,自己就照着写,这是非常不对的,你要分析别人为什么这样写,你要懂得的是思路,而不仅仅是答案。 1 #include<stdio.h> 2 static int c; 3 void hanoi(int n,char x,char y,char z) 4 { 5 if(n==1)//将编号为1的圆盘从x移到z 6 printf("%d step: Move disk .. 阅读全文
摘要:
题目描述:求数组两两之差绝对值最小的值,只要求出最小值即可,不要求求出具体是那两个数。常规思路: 用最简单的算法,时间复杂度为O(N^2)的算法去实现的代码如下: 1 #include<stdio.h> 2 #include<math.h> 3 #include<stdlib.h> 4 int GetMinAbsSubsq(int B[],int len) 5 { 6 int min=abs(B[1]-B[0]); 7 for(int i=0;i<len;i++) 8 for(int j=i+1;j<len;j++) 9 if(min>ab 阅读全文
摘要:
问题描述: 编写算法,求得所有包含在串S中而不包含在串T中的字符(S中重复的只选一个)构成的新串R,及R中每个字符在S中第一次出现的位置。代码:View Code 1 #include<stdio.h> 2 #include<stdlib.h> 3 typedef struct LNode{//每个结点除了保存值外,还保存位置 4 char data; 5 int pos; 6 struct LNode *next; 7 }LNode,*LinkList; 8 void Init_L(LinkList &L)//初始化链表 9 {10 L=(LinkList). 阅读全文
摘要:
题目的参考和解答思路来自http://www.cnblogs.com/nokiaguy/archive/2013/01/29/2881476.html问题描述:求一个已经排序的数组(升序),数组中可能有正数,负数或0,求数组中元素的绝对值最小的数,要求不能用顺序的比较方法(复杂度需小于O(n))。例如,数组{-20,-13,-4,6,77,200},绝对值最小是4问题分析: 根据题意知道,数组是排好序的,既然已经排好序了,哪我按照常识,就应该知道绝对值最小的一定是中间的某个数?所以我认为,知道数组的大小,然后取其中间的数,如果是数组的长度是奇数,那就是中间的数,如果是偶数,那就比较中间的两个. 阅读全文
摘要:
问题描述: 试利用循环队列编写k阶斐波那契序列中前n+1项的算法,要求满足:f(n)max,其中max为某个约定的常数。(注意:本题所用循环队列的容量仅为K,则在算法执行结束时,留在循环队列中的元素应是所求K阶斐波那契序列中的最后k项)。问题分析:这道题可以这样想,循环队列满时,可继续将元素入队列,覆盖以前的值即可。代码:View Code 1 #include 2 #include 3 #define k 8 4 typedef struct{ 5 int *base; 6 int front; 7 int rear; 8 }queue; 9 void InitQu... 阅读全文
摘要:
问题描述:设以带头结点的循环链表表示队列,并且只设一个指针指向队尾元素结点(注意不设头指针),试编写相应的队列初始化,入队列和出队列的算法。代码:View Code 1 #include<stdio.h> 2 typedef char QElemType; 3 typedef struct QNode{ 4 QElemType data; 5 struct QNode *next; 6 }QNode, *QueuePtr;//结构体的定义,对这些的掌握应该要能不看书就能写出来的。//QNode为结构体类型,QueuePtr为结构体名 7 typedef struct{ 8 ... 阅读全文
摘要:
今天上午一二节课上了信息安全概论,讲到加密技术,有点好奇,怎么实现加密和解密,移位密码挺简单,仿射密码用到仿射函数e(x)=ax+b(mod 26) 且a与26的最大公因子为1。密钥就是a,b。这个函数我开始理解错了,我以为ax加上b模除26后的结果,后来问了下老师再知道自己弄错了,是ax+b以后再模除26.然后想相应的解密函数,d(y)=a^(-1)(y-b)(mod 26),这里关键是a的逆怎么求,也就是a*a^(-1)(mod 26)=1 这个也可以换成 a*b+26*k=1;老师说道在计算机中很多地方有用到这个函数 s*a+b*t=1已知其中两个参数,求另外两个参数。要去实现一下,有. 阅读全文
摘要:
问题描述 编写如下定义的递归函数的递归算法g(m,n)=0 当m=0,n>=0时,g(m,n)=g(m-1,2n)+n当m>0,n>=0时代码 View Code 1 View Code 2 #include<stdio.h> 3 int fun(int m, int n) 4 { 5 6 if(m==0&&n>=0) 7 return 0; 8 else 9 return fun(m-1,2*n)+n;//我的了个去,把2*n写成2n,我太不细心了,好好做。10 }11 12 int main()13 {14 int m,n,s;... 阅读全文