- 博客(52)
- 资源 (3)
- 收藏
- 关注
原创 从尾到头输出链表、字符串;不声明变量计算字符串长度
接下来的想法是从头到尾遍历链表, 每经过一个结点的时候, 把该结点放到一个栈中。 当遍历完整个链表后,再从栈顶开始输出结点的值,此时输出的结点的顺序已经反转过来了。 该方法需要维护一个额外的栈,实现起来比较麻烦。既然想到了栈来实现这个函数, 而递归本质上就是一个栈结构。 于是很自然的又想到了用递归来实现。 要实现反过来输出链表, 我们每访问到一个结点的时候, 先递归输出它后面的结点,再输出该结
2014-07-31 22:22:52 444
原创 两个栈实现队列;两个队列实现栈
思路:s1是入栈的,s2是出栈的。 入队列时:直接压入s1即可 出队列时:如果s2不为空,把s2中的栈顶元素直接弹出;否则,把s1的所有元素全部弹出压入s2中,再弹出s2的栈顶元素
2014-07-31 19:34:19 320
转载 常见和链表相关的算法
原味一、 链表排序 链表排序和数组排序的思路类似,只是链表操作起来比较麻烦,因为不能随机访问,所以只能借助于类似于前置或后置插入,添加等概念来完成。下面给出了链表排序的几种方法。辅助代码://单链表节点的定义typedef struct LinkNode{ int val; struct LinkNode* next;
2014-07-31 11:38:17 450
原创 输入一个已经按升序排序过的数组和一个数字, 在数组中查找两个数,使得它们的和正好是输入的那个数字。
题目:输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。要求时间复杂度是 O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。例如输入数组 1、2、4、7、11、15 和数字 15。由于 4+11=15,因此输出 4 和 11。
2014-07-30 15:08:39 4788
原创 判断整数序列是不是二元查找树的后序遍历结果
题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。如果是返回 true,否则返回 false。例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果:8/ \6 10/ \ / \5 7 9 11因此返回 true。如果输入7、4、6、5,没有哪棵树的后序遍历的结果是这个序列,因此返回 false。
2014-07-29 21:24:35 578
转载 计算机网络基础总结
原文地址:计算机网络的整体主要部分: 网络基础部分讲述了网络的分类: OSI模型讲述了七层模型以及每层中常见的设备: 常见的协议以及协议作用层: IP地址的分类以及子网划分: 其中上述计算子网容纳的主机数时,主机号为全0和全1是不可用,所以得出的主机数需要-2.主机号
2014-07-28 16:48:21 350
原创 奇偶调序问题
1、输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。要求时间复杂度为 O(n)。
2014-07-27 15:11:14 422
原创 跳台阶
题目:一个台阶总共有 n 级,如果一次可以跳 1 级,也可以跳 2 级。求总共有多少总跳法,并分析算法的时间复杂度。我们把 n 级台阶时的跳法看成是 n 的函数,记为 f(n)。当n>2 时,第一次跳的时候就有两种不同的选择:一是第一次只跳 1 级,此时跳法数目等于后面剩下的 n-1 台阶的跳法数目,即为 f(n-1);另外一种选择是第一次跳 2 级,此时跳法数目等于后面剩
2014-07-27 10:48:04 257
转载 用bitmap解决海量电话号码统计问题
原文:http://blog.csdn.net/chris820313/article/details/6795561为准备某几个大公司的笔试,看到这样一个问题:已知某个文件内包含一些电话号码,每个号码为8位数字,统计不同号码的个数。我所拜读的材料里提到了用bitmap解决这种问题,也就是说:每一个电话号码被映射到了不同的位。例如:6123456
2014-07-25 20:06:40 3338
原创 多路归并排序
下面的问题描述及相关文字都参考于CSDN中JULY的博客,在此对JULY表示感谢。JULY的博客地址如下:http://blog.csdn.net/v_JULY_v/article/details/6451990
2014-07-25 19:28:50 9314
原创 位图法排序
位图法,bit-map用一个 20 位长的字符串来表示一个所有元素都小于 20 的简单的非负整数集合,边框用如下字符串来表示集合{1,2,3,5,8,13}:0 1 1 1 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0上述集合中各数对应的位置则置 1,没有对应的数的位置则置 0。
2014-07-25 14:02:13 488
原创 分治法求解方程的解
问题描述 有形如:ax3+bx2+cx+d=0 这样的一个一元三次方程。给出该方程中各项的系数(a,b,c,d 均为实数),并约定该方程存在三个不同实根(根的范围在-100至100之间),且根与根之差的绝对值>=1。要求由小到大依次在同一行输出这三个实根(根与根之间留有空格),并精确到小数点后5位。提示:记方程f(x)=0,若存在2个数x1和x2,且x1
2014-07-24 21:07:12 1351
原创 寻找和为定值的两个数
//输入一个数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。//要求时间复杂度是 O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。//例如输入数组 1、2、4、7、11、15 和数字 15。由于 4+11=15,因此输出 4 和 11#include using namespace std; //直接穷举法void find1(int a[],in
2014-07-24 15:49:21 378
原创 自己写字符串函数
char *strcpy(char *des,const char *src){ if(des==NULL || src==NULL) return NULL; char *p=des; while((*des++=*src++)!='\0'); return p;}char *strncpy(char *des,const char* src,int n){ if(des=
2014-07-24 14:42:11 349
转载 哈希表
总结部分来自:http://blog.csdn.net/chenhuajie123/article/details/9210529哈希表 哈希表(Hash Table)也叫散列表,是根据关键码值(Key Value)而直接进行访问的数据结构。它通过把关键码值映射到哈希表中的一个位置来访问记录,以加快查找的速度。这个映射函数就做散列函数,存放记录的数组叫做散列表。
2014-07-24 09:27:54 430
转载 快速排序(递归和非递归)
#include usingnamespace std;intpartition(int*a, intl, inth){ intx = a[l]; inti = l; intj = h+1; inttemp; while(i while(
2014-07-23 19:47:18 482
转载 堆排序
堆排序==二叉堆的定义二叉堆是完全二叉树或者是近似完全二叉树。二叉堆满足二个特性:1.父结点的键值总是大于或等于(小于或等于)任何一个子节点的键值。2.每个结点的左子树和右子树都是一个二叉堆(都是最大堆或最小堆)。当父结点的键值总是大于或等于任何一个子节点的键值时为最大堆。当父结点的键值总是小于或等于任何一个子节点的键值时为最小堆。下图展示一个最小堆
2014-07-23 11:06:06 254
原创 旋转字符串
1、#include #include #include using namespace std; void shift1(char *s,int n){ int len=strlen(s); char tmp; for(int i=0;i<n;i++) { tmp=s[0]; for(int j=0;j<len-1;j++) {
2014-07-22 16:47:55 382
原创 输入某年某月某日,判断这一天是这一年的第几天?
程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊 情况,闰年且输入月份大于3时需考虑多加一天。
2014-07-22 10:45:55 862
转载 【转】计算平方根
求n的平方根,先假设一猜测值X0 = 1,然后根据以下公式求出X1,再将X1代入公式右边,继续求出X2…通过有效次迭代后即可求出n的平方根,Xk+1 先让我们来验证下这个巧妙的方法准确性,来算下2的平方根 (Computed by Mathomatic)1-> x_new = ( x_old + y/x_old )/2y(x_old + -----)x_old#1: x
2014-07-21 21:29:36 483
原创 传值、引用、传指针的试题
#include using namespace std;void fun1(char *p){ p=new char[100];}void fun2(char *&p){ p=new char[100];}void fun3(char **p){ *p=new char[100];}void main(){ char *p1=NULL,*p2=NULL,*p
2014-07-21 19:53:12 352
原创 strcpy函数
先来看看微软的代码:char * __cdecl strcpy(char * dst, const char * src){ char * cp = dst; while( *cp++ = *src++ ) ; /* Copy src over dst */ return( d
2014-07-21 19:10:11 282
原创 二叉搜索树BST
#include using namespace std;struct node{ int data; node *lchild,*rchild;};//插入void Insert(node *&T,int data){ if(T==NULL)//空树时 { T=new node; T->data=data; T->lchild=NULL; T->rchi
2014-07-21 16:07:05 384
转载 B树、B+树、B*树
原文http://www.cnblogs.com/oldhorse/archive/2009/11/16/1604009.htmlB树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right); 2.所有结点存储一个关键字; 3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关
2014-07-21 14:26:18 259
原创 排序
#include using namespace std;#define DEBUG 1void Print(int a[],int length);void InsertSort(int *a,int length);// 直接插入排序void BubbleSort(int a[],int length);//冒泡排序void SelectSort(int a[],int
2014-07-19 19:41:08 294
转载 【转】VC++,掀起你的盖头来 ——谈VC++对象模型
VC++,掀起你的盖头来——谈VC++对象模型(美)简 ? 格雷程化 译译者前言一个C++程序员,想要进一步提升技术水平的话,应该多了解一些语言的语意细节。对于使用VC++的程序员来说,还应该了解一些VC++对于C++的诠释。Inside the C++ Object Model虽然是一本好书,然而,书的篇幅多一些,又和具体的VC++关系小一些。因此,从篇幅和内容
2014-07-18 17:05:21 289
原创 产生随机数
4.产生随机数的用法1) 给srand()提供一个种子,它是一个unsigned int类型;2) 调用rand(),它会根据提供给srand()的种子值返回一个随机数(在0到RAND_MAX之间);3) 根据需要多次调用rand(),从而不间断地得到新的随机数;4) 无论什么时候,都可以给srand()提供一个新的种子,从而进一步“随机化”rand()的输出结果。 0~R
2014-07-18 15:09:17 287
原创 构造函数、析构函数、拷贝构造函数
#include using namespace std;class B { public: B() { cout<<"默认构造函数"<<endl; } ~B() { cout<<"析构函数"<<endl; } B(int i):data(i) //B(int) works as a converter ( int -> instance of B)
2014-07-18 14:33:01 349
原创 大端小端和共同体
大端小端:所谓的大端模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中;所谓的小端模式,是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中。
2014-07-18 10:09:02 529
原创 自定义String类
zidin#include using namespace std;class String {private: char *p;public: String(const char *str=NULL); String(const String &s); ~String(); String &operator=(
2014-07-17 21:56:24 307
转载 【转】求子数组的最大和
前奏 希望更多的人能和我一样,把本狂想曲系列中的任何一道面试题当做一道简单的编程题或一个实质性的问题来看待,在阅读本狂想曲系列的过程中,希望你能尽量暂时放下所有有关面试的一切包袱,潜心攻克每一道“编程题”,在解决编程题的过程中,好好享受编程带来的无限乐趣,与思考带来的无限激情。第一节、求子数组的最大和3.求子数组的最大和题目描述:输入一个整形数组,数组里有正数
2014-07-17 16:29:15 290
转载 【转】大数四则运算的C++实现
http://blog.csdn.net/yzl_rex/article/details/6943020大数四则运算的C++实现[摘要] 大数运算不仅仅运用在密码学中,还运用在一些物理学研究、生物学,化学等科目中。大数运算,意味着参加的值和计算结果通常是以上百位数,上千位数以及更大长度之间的整数运算。例如大家所熟知圆周率π的值,在一般的数值计算中用到圆周率的不须要多
2014-07-16 19:52:38 411
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人