
C/C++
要饭真得好难
这个作者很懒,什么都没留下…
展开
-
内存分配中的堆和栈
转载请标注:http://blog.youkuaiyun.com/zgh1988/article/details/74701661、什么是堆栈?2、一道微软的笔试题。3、自己写的两个关于堆栈的例子?4、如何动态申请二维数组?一、什么是堆栈?1、内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参原创 2012-04-17 22:41:25 · 6143 阅读 · 1 评论 -
浅析类的 默认构造函数, 拷贝构造函数, 赋值拷贝函数“=”
每一个类只有一个析构函数,但可以有多个构造函数(包含一个默认构造函数,一个拷贝构造函数,和其他普通构造函数)和多个赋值函数(包含一个拷贝赋值函数,其他的为普通赋值函数)。一般情况下,对于任意一个类A,如果程序员不显示的声明和定义上述函数,C++编译器将会自动的为A产生4个public inline 的默认函数,这4个函数最常见的形式为:A()原创 2011-10-01 11:23:28 · 3895 阅读 · 3 评论 -
自己的C++命名规范
自己一直使用C/C++编程,所以总结出了自己的一些命名规范。(建议将其放在桌面显眼的地方,以至于写程序时提醒)(1)typedef定义的类型名,类名和枚举类型名以大写字母开头的单词组合而成,一般为名词。(2)局部变量名和参数名采用第一个单词首字母小写而后面的单词首字母大写的单 词组合。(3)具名常量和宏名用全大写的单词组合而成,并在单词之间用单下划线分隔,注意首尾最好不要使用下划线。原创 2013-12-01 22:22:10 · 1364 阅读 · 0 评论 -
归并排序及其应用
归并排序(Merge Sort):归并排序(Merge Sort)的基本思想是:“归并”的含义是将两个或两个以上的有序表组合成一个新的有序表。因此归并排序就是利用归并的思想来实现的,假设初始序列含有n个记录,则可以看成是n个有序的子序列,每个子序列的长度为1,然后两两归并,得到 (n+1)/2个长度为2或1的有序子序列;再两两归并,….,如此重复,直至得到一个长度为n的有序序列位置,这种排序方原创 2013-08-10 15:52:10 · 1653 阅读 · 0 评论 -
求两个字符串的最长公共子串,最长公共子序列,编辑距离
(1) 找出两个字符串的最长公共子串题目:输入两个字符串,找出两个字符串中最长的公共子串。找两个字符串的最长公共子串,这个子串要求在原字符串中是连续的。因此我们采用一个二维矩阵来存储中间结果,下面我们看这个二维数组如何构造?假设两个字符串分别是:”bab”和”caba”。如果str[i] == str[j] 则matrix[i][j] = 1,否则matrix[i][原创 2013-08-10 22:01:35 · 4818 阅读 · 2 评论 -
快速排序及其应用
快速排序(Quick Sort):快速排序(Quick Sort)的基本思想是:通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对着两部分记录继续进行排序,以达到整个序列有序的目的。例题:假设现在我们要对数组{50, 10, 90, 30, 70, 40, 80, 60, 20}进行排序。算法实现如下:#include using原创 2013-08-10 15:27:58 · 2067 阅读 · 1 评论 -
二分查找及其应用
(1) 二分查找:使用二分查找(Binary Search)的前提有:(1)线性表必须是关键码有序(通常是从小到大有序)。(2)其次,线性表必须是顺序存储。所以链表不能采用二分查找。二分查找(Binary Search)基本思想:在有序表中,取中间记录作为比较对象,若给定值与中间记录的关键字相等,则查找成功;若给定值小于中间记录的关键字,则在中间记录的左半区继续查找;若给定值大于中间记原创 2013-08-10 14:49:14 · 2587 阅读 · 0 评论 -
求数组中的最大子数组之和,最长递增子序列
(1) 求数组中的子数组之和的最大值(2) 求数组中的最长递增子序列(1) 求数组中的子数组之和的最大值。题目:输入一个整形数组,数组里有整数也有负数。数组中一个或连续的多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。我们定义nSum表示临时子数组之和,nAll表示子数组之和的最大值。当nSum nSum = max原创 2013-08-10 20:06:26 · 1956 阅读 · 0 评论 -
递归 和 非递归 遍历二叉树
1 二叉树结点2 先序遍历二叉树3 中序遍历二叉树4 后序遍历二叉树5 测试样例1 二叉树结点struct BinaryTreeNode{int m_nValue;BinaryTreeNode *m_pLeft;BinaryTreeNode *m_pRight;};2 先序遍历二叉树 先序遍历二叉树递归算法定义为:若二叉树为空原创 2013-08-22 16:29:54 · 1893 阅读 · 0 评论 -
C++成员函数的重载,继承,覆盖和隐藏
一、 C++成员函数的重载C++中的成员函数有四种,分别是普通成员函数,virtual虚函数,const成员函数。(1) void func(int a);(2) virtual void func(int a);(3) void func(int a) const;如果在一个类中,声明这四种函数,哪是重复定义?哪些是重载?其中(1)(2)是重复定义,故编译不能通过,而(3原创 2013-05-10 16:31:24 · 2128 阅读 · 0 评论 -
单例模式
下面说说单线程模式下的单例模式的实现什么是单例模式?简单来说,单例模式就是保证一个类仅有一个实例,并提供一个访问它的全局访问点。从该定义中可以得知:(1)该类仅有一个实例,则不能随便创建该类的对象,所以默认的构造函数声明为私有的,private。(2) 需要提供一个静态的指针变量来指向该类的唯一一个实例。(3) 需要提供一个静态函数,来获取该指向该类的唯一一个实例的静态的指针变量。原创 2013-05-22 21:43:27 · 1177 阅读 · 0 评论 -
类的const和非const成员函数的重载
1. 类的const成员函数与非const成员函数的重载#include #include using namespace std;class Person{public: Person() {} Person(string name, string address) : mName(name), mAddress(address){} string& GetPers原创 2013-05-08 16:49:10 · 1776 阅读 · 0 评论 -
exit() _exit() 和 return() 的区别
转载于 http://www.360doc.com/content/12/0504/15/9400799_208611794.shtml#includevoid exit(int status);不像fork那么难理解,从exit的名字就能看出,这个系统调用是用来终止一个进程的。无论在程序中的什么位置,只要执行到exit系统调用,进程就会停止剩下的所有操作,清除包括PCB在内的各种数转载 2012-11-24 20:36:14 · 1098 阅读 · 0 评论 -
“Hello World”背后的那些事
转载请标注 http://blog.youkuaiyun.com/zgh1988/article/details/7863888#include int main(){ printf("Hello World"); return 0;}这是一个“Hello World”程序,相信大家对它再熟悉不过了。现在就让我们来探讨该程序是如何输出“Hello World”,在控制台输出原创 2012-08-14 14:44:02 · 1769 阅读 · 0 评论 -
使用两个队列实现一个栈,使用两个栈实现一个队列!
1、这里所说的都是STL中的queue,stack 其中queue的特点是先进先出,它所具有的函数有: queue void push(int elem) //向队列中添加元素 void pop() //原创 2011-11-18 17:21:04 · 9598 阅读 · 3 评论