- 博客(11)
- 资源 (1)
- 收藏
- 关注
原创 二叉树(利用栈和队列实现递归和非递归遍历,构建等)
/** 二叉树的链式存储实现 队列实现层序插入和层序遍历 栈实现非递归的二叉树的遍历 **/#include#include#include#include//二叉树元素类型typedef char TElemType;//二叉树节点 typedef struct BiTreeNode{ TElemType QItem; struct BiTreeNode *l
2013-03-31 14:05:41 2603
原创 外部排序
所谓的外部排序就是在磁盘上排序而不是在内存,刚开始也是看数据结构而产生写一个外排的冲动。算法大致过程是:对一个数据较多的文件进行排序,数据少的话就没必要用外排了,我是先产生了一个数据文件,然后把他分成n段,对每段内排,排完再写入文件,最后把这些片段归并起来,就成了一个排序好的文件了。其实写完发现没什么含量,就一个文件操作,虽然也写的磕磕绊绊,还请人帮忙了,数据少的时候可以,100万以上就很
2013-03-29 08:48:15 589
原创 分治法实现pow(x,n)函数的功能
x^n=x x x.....x朴素算法的时间复杂度是O(n)采用分治(当n为偶数)x^n=x^(n/2)*x^(n/2)T(n)=2T(n/2)+O(1)时间复杂度为O(logn)我想的是采用函数的递归来实现#includeint mypow(int x,int n){ int sum; if(n==1) return x; if(n&1)//n为奇
2013-03-26 16:57:11 1601 1
原创 快速统计一个数的二进制下1的个数
方法貌似挺多,这里的就是每次把靠右的那一位1统计出来,并置为0,循环搞定。#includeint count(int num){ int sum=0; while(num) { num&=(num-1); sum++; } return sum;}int main(){ int x; while(scanf("%d",&x)) { printf("%d
2013-03-26 12:40:21 583
原创 c语言写的通讯录
无界面的通讯录,能存储联系人姓名和号码,当然没有保存到文件,因为只是个数据结构的练手。用到了链表的一些操作,能按关键字(姓名和号码都可以)模糊查找,并且显示的时候是按查找的次数来显示,查找的字符串匹配算法用的是KMP算法,纯属杀鸡用牛刀,初始化的时候还用到了递归,三百多行代码。/**@lkxiaolou 通讯录**/ #include#include#include/*
2013-03-26 10:33:24 924
原创 c语言中不用while,for,do-while实现循环
如果不用循环结构实现一个循环体,怎么解?先看代码#includeint circle(int n){if(n>1000) return 1;else { printf("%d\t",n); circle(n+1); }}int main(){ int n=1; circle(n); return 1;}是不是有种被调戏的感觉?递归是可解的,还
2013-03-26 10:20:35 2415
原创 12个人排队问题
阿里巴巴和蘑菇街的笔试题,原题是这样的:12个高矮不同的人,排成两排,每排必须是从矮到高排列,而且第二排比对应的第一排的人高,问排列方式有多少种?将这12个人从1到12编号,只要确定矮的那排,后面一排也就确定了,因为是有序的。然后第一个位置只能是1(同样12也只能在第二排的最后);第二个位置只能是2或者3,如果是4的话,2,3必为上面一排的第一和第二个位置,3比4小了,
2013-03-18 17:38:56 3449
原创 指针的一些看法
#includeint main(){ int a[20]; int *p1=a; int *p2=a+5; printf("%d\n",p2-p1); printf("%d\n",(int)p2-(int)p1); printf("%d\n",p2-(int)p1);}地址加上(减去)一个数,其实是地址加上减去这个数乘以地址类型的大小,对地址和地址之间的加减也成立,这也就是
2013-03-18 10:50:57 457
原创 vi常用命令
先学这些常用的,不出意外应该够用了模式指令模式+i=文本输入模式文本输入模式+esc=指令模式H左J下K上L右d+方向键 删除dd删除整行u撤销s删除列并进入文本编辑模式将光标移动到将要复制的行处,按yy进行复制当前行(按nyy复制n行),再移动到粘贴位置,按p进行粘贴将光标移到复制的首位置,按下v
2013-03-17 10:37:14 456
原创 迭代法实现开方运算
/**计算机组成原理--迭代法求根号a x=sqrt(a) Xn+1=(Xn+b/Xn)/2**/#include#includedouble Sqrt(double e,double a){ double x1=10,x2=10;//初始状态 ,只要不取负数和0就行 x2=(x1+a/x1)/2;//第一次迭代 while(fabs(x1-x2)>e) {
2013-03-17 08:45:31 1043
原创 感受下函数指针(指针函数)和结构体内部函数
函数指针是指向函数的指针,指针函数是函数返回指针类型//函数指针#includeint fun(int a){ return a*a;} int dy(int (*f)(int x),int a){ return f(a);}int main(){ int a=9; int sum; int (*f)(int x)=fun; sum=dy(f,a);//f是函
2013-03-16 13:07:11 707
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人