Furney
码龄13年
关注
提问 私信
  • 博客:155,674
    155,674
    总访问量
  • 61
    原创
  • 777,057
    排名
  • 75
    粉丝
  • 0
    铁粉

个人简介:人的一生中,最光辉的一天并非是功成名就那天,而是从悲叹与绝望中产生对人生的挑战,以勇敢迈向意志那天。

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:中国
  • 加入CSDN时间: 2011-12-21
博客简介:

CS练功房

博客描述:
任何没有经过验证的理论都是值得怀疑的
查看详细资料
个人成就
  • 获得47次点赞
  • 内容获得28次评论
  • 获得44次收藏
创作历程
  • 53篇
    2012年
  • 13篇
    2011年
成就勋章
TA的专栏
  • Linux程序设计
    9篇
  • 数据结构与算法
    27篇
  • Linux程序设计
    10篇
  • Linux GVim
    4篇
  • 笔试面试
    6篇
  • ACM
    13篇
  • C/C++
    18篇
  • 字符串
    9篇
  • 数据库
    1篇
  • Web
    1篇
  • 网络
    1篇
  • Linux
  • 杂谈
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

180人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

字符串的转换、逆置、删除重复元素及判断是否为邮件格式

1.给定的一个字符串,比如:this is my program,要求将每个单词的首字母大写,输出:This Is My Program 。#include int getsline(char *s){ int i = 0, c; if(s == NULL) return 0; for(i = 0; (c = getchar()) != EOF && c != '
';
原创
发布博客 2012.10.08 ·
2431 阅读 ·
2 点赞 ·
1 评论 ·
0 收藏

宏定义打印Hello World

#include "stdio.h"void print(){ *}void main(){}在*号处加一段代码,显示出"hello,world".分析:c++程序运行的入口函数是main(),因此要想办法在*处增加的代码中调用到main()函数。在c++中宏定义可以实现代码的替换,因此从宏定义入手可以解决这个问题。为了实现main()函数的运行,需要将main作替
原创
发布博客 2012.10.05 ·
1645 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

加减表达式求值

一个字符串只由'+','-'和‘0’-‘9’组成,并且'+','-'只作为为二元运算符,计算该表达式的值。思路:由于表达式只包含加、减两种运算,而加减运算是没有优先级的,因此可以顺序对表达式求值。首先提取表达式第一个数和第一个操作符,然后再提取第二个数,依据操作符将两个数相加或相减,得到的结果作为新的第一个数,再在表达式中提取一个操作符和操作数计算,直到表达式结束。例如对于表达式“1+12-7
原创
发布博客 2012.09.27 ·
1710 阅读 ·
2 点赞 ·
0 评论 ·
4 收藏

第一个只出现一次的字符

利用哈希表的思想来解,首先设置一个数组保存字符串中每个字符出现的次数,第一趟遍历字符串计算出每个字符出现的次数,第二次遍历找出第一个只出现一次的字符。算法的时间复杂度为O(n)。char FirstAppearedChar(char *str){ if(str == NULL) // 数据合法性检验 return '\0'; unsigned int hashTable[256
原创
发布博客 2012.09.18 ·
983 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

连续子数组的最大和

问题描述:输入一个整数数组,数组中有正数也有负数,一个或连续的多个整数组成一个子数组,求所有子数组的和的最大值。求子数组的和的最大值,首先可以求出数组所有子数组的和,再逐一比较可以得到和的最大值。这是最直观易懂的一种解法。但是对一个长度为n的数组,总共有n(n+1)/2个子数组,计算所有子数组的和时间复杂度为O(n^2)。而当n较大时,这种算法是很难被用户接受的。对于数组(a1, a2,
原创
发布博客 2012.09.17 ·
7230 阅读 ·
1 点赞 ·
2 评论 ·
2 收藏

最小的K个数

问题描述:给定的n个整数,计算其中最小的K个数。最直观的解法莫过于将n个数按升序排列后输出前k个。但是就效率来看,这种方法并不是最理想的。一种改进方法是借助快速排序中对数组的划分,以第k个元素对数组进行划分,使得比第k个数字小的数字都在其左边,比其大的数字都在它的右边。void Swap(int &a, int &b){ int c = a; a = b; b = c;}int
原创
发布博客 2012.09.17 ·
2379 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

字符串的排列

描述:输入一个字符串,打印出该字符串字符的所有排列。比如给定字符串“abc”,即求字符’a‘,’b‘,’c’的全排列,结果应该是abc、acb、bac、bca、cba和cab总有六个。1、全排列的递归方法思路:对于这个问题,我们从结果来分析,以abc和acb为例可以看出,相当于以a为字符串首字符,再和b、c的全排列cb、cb连接构成。以此类推,可以确定以b、c为首字符的全排列。因此解决这个
原创
发布博客 2012.09.16 ·
1247 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

计算器程序

计算器程序,非递归实现#include #include #include #include #include #include #include #include using namespace std;void calculateAndOutput(char* str);int isspace(int x){ if(x == ' '|| x == '\t' ||
原创
发布博客 2012.09.15 ·
1268 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

字符串转化为数字

将给定字符串转化为数字,如果结果为正较大返回2147483647,如果结果为负且较大返回-2147483648。字符串除包含数字外还包含空格及其他字符,因此需要对不是数字的字符进行处理。#include int isspace(int x){ if(x == ' '|| x == '\t' || x == '
' || x == '\f' || x == '\b' || x
原创
发布博客 2012.09.15 ·
984 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

循环链表模板类

相对于单链表,循环链表的最后一个结点的next指针指向表头元素,而且每个结点还包含指向其前驱结点的prev指针。链表第一个结点的prev指针是链表的头结点,表头结点的prev指针指向链表最后一个结点。循环链表的插入和删除操作需要注意各指针的变化顺序,否则容易造成结点混乱。另外对循环链表来说,更容易找到指定结点的前驱。/* * 循环链表模板类 */#ifndef _DOUBLE_LIST_
原创
发布博客 2012.06.18 ·
1751 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

GVim智能补全clang

GVim编辑器结合auto-complete插件实现的代码自动补全虽然能满足一定的需求,但是其依赖tags,不能实现动态的代码补全。clang的出现打破了这一补全模式,其信赖于底层的llvm对代码解析,形成抽象语法树,进而进行补全。因此clang的补全效果非常好,而且补全较准确。1、安装clang使用clang之前需要安装代码解析包,我使用的是Ubuntu系统,可以通过sudo apt-g
原创
发布博客 2012.06.14 ·
6234 阅读 ·
1 点赞 ·
1 评论 ·
1 收藏

单链表模板类

链表是最基本的数据结构,是一组不连续的数据的集合,链表中每个结点除包含结点元素外,还包含下一结点的地址。对链表可以实现插入、删除、查找以及显示等操作。/* * 单链表模板类List.h */ #ifndef _LIST_H_#define _LIST_H_#include using namespace std;template class List{publi
原创
发布博客 2012.06.12 ·
1268 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

数据结构小总

1、栈和队列的区别栈是限定只能在表的一端进行插入和删除操作的线性表。 队列是限定只能在表的一端进行插入和在另一端进行删除操作的线性表。 从"数据结构"的角度看,它们都是线性结构,即数据元素之间的关系相同。但它们是完全不同的数据类型。除了它们各自的基本操作集不同外,主要区别是对插入和删除操作的"限定"。 栈和队列是在程序设计中被广泛使用的两种线性数据结构,它们的特点在于基本操作的
原创
发布博客 2012.05.31 ·
949 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

Linux内核书目

发布资源 2012.05.30 ·
txt

看到这篇比较windows和linux的文章,突然一阵莫名的无助

今天在csdn论坛上看到一篇文章,感觉还不错,所以转载到博客中,对于文中观点不作评论。以下是文章正文内容:原文地址:http://topic.csdn.net/u/20120528/21/f845ab95-5105-4108-aeda-6f1aa979309b.html?19308有个朋友看我半年没有用 Windows,有时就会问我:"你只用 Linux,有没有发现有些 Windows 能
转载
发布博客 2012.05.29 ·
1214 阅读 ·
3 点赞 ·
0 评论 ·
1 收藏

教你如何迅速秒杀掉:99%的海量数据处理面试题

前言   一般而言,标题含有“秒杀”,“99%”,“史上最全/最强”等词汇的往往都脱不了哗众取宠之嫌,但进一步来讲,如果读者读罢此文,却无任何收获,那么,我也甘愿背负这样的罪名,:-),同时,此文可以看做是对这篇文章:十道海量数据处理面试题与十个方法大总结的一般抽象性总结。    毕竟受文章和理论之限,本文将摒弃绝大部分的细节,只谈方法/模式论,且注重用最通俗最直白的语言阐述相关问
转载
发布博客 2012.05.16 ·
1020 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

Linux程序设计——套接字

进程间通信的机制包括信号量、共享内存、管道和消息队列等,但是这些机制只能实现在一台计算的进程间通信。本文将介绍另外一种进程间通信的机制——套接字,可以实现计算机网络中的通信。1、套接字套接字是一种通信机制,通过使用这种通信机制,客户/服务器系统的开发既可以在本地单机上进行,也可以跨网络进行。套接字明确地将客户和服务器区分开来,可以实现将多个客户连接到一个服务器。2、套接字连接套接字
原创
发布博客 2012.05.16 ·
2134 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

Linux程序设计——信号量、共享内存和消息队列

1、信号量多线程程序中总有一部分临界代码,编程人员必须确保只有一个进程可以进入临界代码并拥有对资源的独占式访问权。使用信号量机制可以确保进程之间的并发执行。信号量是一个特殊的变量,只允许对它进行等待(wait)和发送信号(signal)这两种操作,即PV操作:P——用于等待V——用于发送信号》》》PV操作的定义P(sv)——sv > 0,sv -= 1。sv = 0挂起进程的执
原创
发布博客 2012.05.15 ·
1886 阅读 ·
0 点赞 ·
0 评论 ·
3 收藏

Linux程序设计——进程间通信:管道

使用信号在进程间通信,传送的信息只限于一个信号值。更多的数据交换需要使用一种新的机制——管道。管道(pipe)把一个进程的输出连接到另一个进程的输入。对shell命令的连接就是通过管道实现的,使用管道符号"|"连接。1、进程管道使用popen和pclose创建和关闭管道。popen允许一个程序将另一个程序作为新进程启动,并可以传递数据给它或者通过它接收数据。#include
原创
发布博客 2012.05.09 ·
2867 阅读 ·
0 点赞 ·
2 评论 ·
2 收藏

Linux安装中文输入法并设置开机启动

英文版Linux系统初始安装是没有中文输入法的,因此需要另外下载安装,而且下载安装好的中文输入法在开机时默认不启动。下面将介绍如何安装中文输入法,并设置为开机自动 启动。1、五笔输入法sudo apt-get install ibus-table-wubi2、拼音输入法在软件中心搜索sunpinyin,安装ibus-sunpinyin3、将ibus设置成开机启动Syst
原创
发布博客 2012.05.04 ·
6959 阅读 ·
1 点赞 ·
0 评论 ·
2 收藏
加载更多