自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

烽火前秦路

对待知识,犹如飞蛾扑火般热情!

  • 博客(29)
  • 资源 (6)
  • 收藏
  • 关注

转载 Linux中fork()函数详解

一、fork入门知识     一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。    一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来

2016-06-19 15:26:26 392

原创 剑指Offer----面试题30:最小的K个数

题目:输入n个整数,找出其中最小的k个数,例如输入{ 4, 5, 1, 6, 2, 7, 3, 8 }这8个数,则最小的4个数字是{1,2,3,4}。方法一:时间复杂度为O(nlongn)且改变了原来数组,不推荐。分析:首先通过快速排序算法对数组元素进行排序,然后依次输出其中的前k个数。代码《略》方法二:分析:使用Part

2016-06-11 17:36:25 477

原创 剑指Offer----面试题29:扩展----数组中第K大的数字

#include #include#includeusing namespace std;int random_partion(int *p, int n){ int idx = rand() % n; swap(p[idx], p[n - 1]); int i = -1; //i表示最后一个小于p[n-1]的元素的位置 int j = 0; //j用来扫描数组

2016-06-11 16:07:25 838

原创 剑指Offer----面试题29:扩展----数组中第K小的数字

题目:求数组中第K小的数字。方法一:思想:对输入的数组进行排序,设计一个计数器。然后一次遍历数组中的元素,非前后非重复的数字使计数器加1.代码如下:#includeusing std::cout;using std::endl;class ThrowError{};void show(int *arr, int length){

2016-06-11 16:06:12 496

原创 剑指Offer----面试题29:数组中出现次数超过一半的数字

题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{ 1, 2, 3, 2, 2, 2, 5, 4, 2 }。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。方法一:分析:第一种方法比较简单,利用关联容器map。源代码如下:#include#includeusing std:

2016-06-07 18:13:25 481

原创 剑指Offer----面试题28----扩展:从1到n中随意取若干数使之与某一数相等

题目输入两个整数n和m,从数列1,2,3...n中随意取几个数,使其和等于m,要求列出所有的组合。源代码:#include #include using namespace std;list list1;void find_factor(int sum, int n){ //递归出口 if (n <= 0 || sum <= 0) return;

2016-06-06 23:52:18 551

原创 剑指Offer----面试题28----扩展:八皇后问题

题目:在8×8的国际象棋上摆放八个皇后,使其不能相互攻击,即任意两个皇后不得处在同一行、同一列或者同一对角斜线上。下图中的每个黑色格子表示一个皇后,这就是一种符合条件的摆放方法。请求出总共有多少种摆法?分析:由于八个皇后的任意两个不能处在同一行,那么这肯定是每一个皇后占据一行。于是我们可以定义一个数组ColumnIndex[8],数组中第i个数字表示位于第i

2016-06-06 22:55:49 668

原创 剑指Offer----面试题28----扩展:字符的所有组合

题目:求字符的所有组合,例如输入abc, 则他们的所有组合有a、b、c、ab、ac、bc、abc。分析:如果输入n个字符,则这n个字符所构成长度为1的组合,长度为2的组合,......,长度为n的组合。求n个字符的长度为m(1源代码如下:#include#include#includeusing namespace std;static int

2016-06-06 22:41:40 1357 1

原创 剑指Offer----面试题28:字符串的排列 & 去重

题目:输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则打印输出字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab、cba。分析:首先求得所有可能出现在第一个位置上的字符,即把第一个字符和后边所有的字符交换;固定第一个字符,求后面所有字符的排列。如abc:第一步:将第一行数据分别和第二行和第三行数据交换

2016-06-06 21:52:40 1017

原创 剑指Offer----面试题27:二叉搜索树与双向链表

题目:输入一颗二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。如下图中的二叉搜索树,则输出转换之后的排序双向链表。分析:中序遍历算法的特点是按照从小到大的顺序遍历二叉树的每一个结点。当遍历到根节点的时候,可以把树分为三部分:值为10的结点,根节点值为6的左子树,根节点值为14的右子树。根据排序链表

2016-06-06 18:02:33 447

原创 剑指Offer----面试题26:复杂链表的复制

题目:请实现哈数ComplexListNode *Clone(ComplexListNode *pHead),复制一个复杂链表。在复杂链表中,每个结点除了有一个next指针指向下一个结点外,还有一个sibling指向链表的任意结点或者NULL。分析:如下图是一个含有5个结点的复杂链表,实箭头代表next指针,虚箭头代表sibling指针。指向NULL的指针没有画出。

2016-06-06 16:44:13 416

原创 剑指Offer----面试题25:二叉树中和为某一值的路径

题目:题目:输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。从树的根节点往下一直到叶节点所经过的结点形成一条路径。分析:官方源代码:/* 题目:输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。 从树的根节点往下一直到叶节点所经过的结点形成一条路径。*/#include"Binary

2016-06-06 11:22:35 447

原创 剑指Offer----面试题24:二叉搜索树的后序遍历序列

题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。如下图:当输入的数组为{5,7,6,9,11,10,8}时,返回true,否则返回false。分析:在后续遍历中,最后一个数字是树的根节点的值,数组中前面的数字可以分为两部分:第一部分是左子树的值,它们都比根节点

2016-06-05 16:09:25 381

原创 剑指Offer----面试题23:从上往下打印二叉树(层序遍历)

题目:从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印。如下图的二叉树,则依次打印出8,6,10,5,7,9,11.分析:源代码:#include"BinaryTree.h"#include#includeusing std::cout;using std::endl;using std::queue;

2016-06-05 14:42:10 471

原创 剑指Offer----面试题22:栈的压入、弹出序列

题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1/2/3/4/5是某栈的压入序列,序列4/5/3/2/1是该栈序列对应的一个弹出序列,但是4/3/5/1/2就不是该压栈序列的弹出序列。分析:建立一个辅助栈,将一个序列中的数字依次压入栈,依次弹出并和第二个序列中的栈相比较。

2016-06-05 13:48:06 396

转载 模板类的定义和声明为何要写在一起

转自前言常遇到询问使用模板到底是否容易的问题,我的回答是:“模板的使用是容易的,但组织编写却不容易”。看看我们几乎每天都能遇到的模板类吧,如STL, ATL, WTL, 以及Boost的模板类,都能体会到这样的滋味:接口简单,操作复杂。我在5年前开始使用模板,那时我看到了MFC的容器类。直到去年我还没有必要自己编写模板类。可是在我需要自己编写模板类时,我首先遇到的事

2016-06-04 23:45:17 3328

原创 剑指Offer----面试题21:包含min函数的栈

题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。在该栈中,调用min、push及pop的时间复杂度都是O(1)。分析:使用两个栈,一个数据栈,一个辅助栈,数据栈中存放数据,辅助栈中依次存放较小的值。源代码:头文件StackWithMin.h#ifndef STACKWITHMIN_H#defin

2016-06-04 23:39:02 270

原创 剑指Offer----面试题20:顺时针打印矩阵

题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。例如:输入一下矩阵则依次打印出数字1/2/3/4/8/12/16/15/14/13/9/5/6/7/11/10分析:把矩阵想象成若干个圈,每次打印其中的一个圈。官方源代码:#include#includevoid PrintMatrixInCircle(int**

2016-06-04 21:31:48 336

原创 剑指Offer----面试题19:二叉树的镜像

题目:请完成一个函数,输入一个二叉树,该函数输出它的镜像。方法一:分析:镜像无非就是让二叉树每一个结点的左孩子和右孩子交换位置,显然,这要用到递归的知识。源代码如下:#include"BinaryTree.h"#includeusing std::cout;using std::endl;using namespace Ord

2016-06-04 18:32:45 350

原创 剑指Offer----面试题18:树的子结构

题目:输入两颗二叉树A和B,判断B是不是A的子结构。如下图:树B是树A的子结构。方法一:分析:要判断树B是否为树A的子结构,可以分为两步,第一步在树A中找到和树B的根节点的值一样的结点R,第二步再判断树A中以R为根节点的子树是不是包含和树B一样的结构。源代码如下:#include"BinaryTree.h"#includ

2016-06-04 17:23:43 451

原创 剑指Offer----面试题17:合并两个排序的链表

题目:输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然按照递增排序。如下图所示:方法一:分析:创建新的链表3,每次比较链表1和2上相应的值,再链表3上依次创建新的结点,并将各个结点连接起来。源代码:#include"List.h"#includeusing std::cout;using std::endl;usi

2016-06-04 12:53:02 516

原创 剑指Offer----面试题16:反转链表

题目:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。方法一:分析:我们使用一个栈,首先将链表中的每一个结点都存储到栈中,然后将栈中的结点依次取出,重新构造链表,注意,要保持头结点不变,也就是说要在原来的链表基础之上重新构造新的反转链表!源代码如下:#include"List.h"#include#incl

2016-06-04 11:32:44 356

原创 剑指Offer----面试题15:链表中倒数第K个结点

题目:输入一个链表,输出该链表中倒数第K个结点。为了符合大多数人的习惯,本题从1开始计数,即聊表的尾结点是倒数第一个结点。例如一个链表6个结点,从头结点开始它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个结点是值为4的结点。方法一:分析:假设整个链表中有n个结点,那么倒数第K个结点就是从头结点开始的第n-k+1个结点。如果我们能得到链表中的结点个数n,

2016-06-03 23:17:14 627

原创 剑指Offer----面试题14:调整数组顺序使奇数位于偶数前面

题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有的偶数位于数组的后半部分。方法一:分析:该方法使用的是容器,准确的来讲不属于数组,因此用方法一来做此题很可能不会得分!源代码:#include#includeusing std::cout;using std::endl;using

2016-06-03 21:37:30 536

原创 剑指Offer----面试题13:在O(1)时间删除链表结点

题目:给定单向链表的头结点和一个指针结点,定义一个函数在O(1)时间删除该结点。方法一:在以往的算法中,我们往往都是从链表的头结点开始循环遍历找到该结点的前一个结点a,通过调整该结点a的指针来删除结点,然而这种算法的时间复杂度为O(n),如下如所示:我们也可以找到该结点i的下一个结点j,将j的内容复制到需要删除的结点i上来覆盖掉其原有的内容,然后再把

2016-06-03 18:32:22 392

原创 剑指Offer----面试题12:打印1到最大的n位数

题目:输入数字n,按顺序打印出从1到最大的n为十进制数。比如输入3,打印1、2、3一直到最大的3位数即999.方法一:分析:只需计算出最大的数字,然后循环依次打印即可!源代码如下:#includeusing std::endl;using std::cout;void PrintOneToMax1(int n){ if (n <=

2016-06-03 16:26:55 791

原创 剑指Offer----面试题11:数值的整数次方

题目:实现double Power(double base, int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。方法一:分析:浮点数与0的比较;0的0次方是没有意义的,既可以输出为0又可以输出为1,需要与面试官讨论;0的负数次方是错误的,既可以抛出异常,也可以指定特定的输出结果,我们在这里抛出异常;

2016-06-03 11:20:22 927

原创 剑指Offer----面试题10:二进制中1的个数

题目:请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。例如把9表示成二进制是1001,有2位是1.因此如果输入9,该函数输出2.方法一:注意:整数和负数以及0的区别,这是由存储机制决定的。分析:将输入的整数依次右移并与1相位与!源代码如下:#includeusing std::cout;using std::endl;

2016-06-02 23:53:33 454

原创 剑指Offer----面试题九:斐波那契数列

题目:写一个函数,输入n,求斐波那契数列(Fibonacci)的第n项,斐波那契数列的定义如下:方法一:第一种方法就是我们在学习C或者C++语言时接触到的递归调用,程序源代码如下:#include#include#include#includeusing std::cin;using std::cout;using std::endl;using s

2016-06-02 20:43:32 1535

DetoursExpress.msi

一款小而又强大的软件,C学习路上的必选工具!

2016-04-18

OllyDbg.rar

OllyDbg包含有所有的插件,解压缩即可使用。

2016-04-18

Spy_2.7.rar

不用解释,懂得都懂!

2016-04-18

数据结构经典书籍

本压缩文件包括两本书: 一本是由清华大学出版社,严蔚敏、吴伟民编著的《数据结构》(C语言版) 另外一本是由西安电子科技大学出版社,高一凡编著的《数据结构》算法实现及解析(第二版)。

2016-04-01

FscaptureV8.1

FscaptureV8.1

2016-03-22

典型密码算法及其C语言实现_附录代码实现

典型密码算法及其C语言实现_附录代码实现

2016-03-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除