![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
文章平均质量分 71
yingsun
坚持下去~
展开
-
针对fork的调用问题。(腾讯笔试题)
首先贴上两个题目:#include#include#includeint main(void){ int i; for(i=0;i<2;i++) { fork(); printf("-"); } return 0;}#include转载 2012-09-27 19:30:14 · 1537 阅读 · 0 评论 -
反转句子中单词的顺序。
题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。例如输入“I am a student.”,则输出“student. a am I”。一个比较好的思路是将给定句子中的所有字母进行反转 成:!margorp xunil evol I,然后再对给定的每个单词进行反转,程序:#include原创 2012-09-19 21:27:15 · 3412 阅读 · 0 评论 -
给定先序:ABCDEFGHIJK 给定中序:CBEDGFAHJIK 首先分析上述给定的先,中序,首先得知先序遍历的肯定是二叉树的根节点:A,在看中序遍历,根据中序遍历的原理可知,在A左边的一定全部属于
给定先序:ABCDEFGHIJK给定中序:CBEDGFAHJIK首先分析上述给定的先,中序,首先得知先序遍历的肯定是二叉树的根节点:A,在看中序遍历,根据中序遍历的原理可知,在A左边的一定全部属于A的左子树,在其右边的肯定属于其右子树。再看序列,先序:BCDEFG,中序:CBEDGF,可以把这两个序列作为遍历一个树的结果,那么同理可知B肯定是此树的根节点,二C属于此树的左子树部分,原创 2012-09-19 21:23:01 · 2230 阅读 · 0 评论 -
父类的虚函数声明为private,是否可以实现多态
大家,先想一想,如果把原来实现多态的父类中virtual函数声明为private的形式,是否还可以实现多态呢。答案将由下面的代码给出。#includeusing namespace std;class A{private: virtual void print() { cout<<"in class A!"<<endl原创 2012-09-28 21:28:15 · 1907 阅读 · 0 评论 -
用c/c++写一个堆栈管理程序
这是一个面试题,那个狗日的面试官让我当场写出来,我要是能写出来也得累出血了。感谢原文作者的贡献,文中还有小错误,会尽快改正。头文件:#ifndef _KSMFMemory_#define _KSMFMemory_#ifndef KCAHR #define KCHAR char#else #define KCHAR short#endif#ifdef _cplusplus转载 2012-09-27 11:06:37 · 1610 阅读 · 0 评论 -
求旋转数组的最小元素(把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个排好序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3, 4, 5, 1, 2}为{1, 2, 3
求旋转数组的最小元素(把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个排好序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3, 4, 5, 1, 2}为{1, 2, 3, 4, 5}的一个旋转,该数组的最小值为1。解题思路:首先,想到得思路肯定是把这个数组进行右旋转(要理解旋转的概念,就是比如说:abcdef,要进行右旋2位,那么移动后的结果为efabcd)原创 2012-09-16 15:12:28 · 2306 阅读 · 0 评论 -
一个数组里,数都是两两出现的,但是有三个数是唯一出现的,找出这三个数。
这个题我用的是trie索引树,不知道对不对,但是我写完程序运行后结果是对的,先贴上程序,一起探讨:#include#include#include#define branch_num 10typedef struct trie_node{ int count; struct trie_node *child[branch_num];}TrieNode,*TrieTre原创 2012-09-22 10:32:53 · 1739 阅读 · 0 评论 -
定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。要求函数min、push以及pop的时间复杂度都是O(1)。
自己用c语言编写的一个程序,是按照数据结构书上给出的结构。如果不对的地方请指教。同时会给出c++的设计。#include#include#define STACK_MAX_CAPACITY 20#define INCREMENT 10typedef struct stack{ int *base; int *top; int capacity;}stack;stack d原创 2012-11-18 20:04:24 · 3147 阅读 · 0 评论 -
用stack实现queue-这是一个很常见的面试题
自己用stack实现的queue,能通过一些基本的测试,如果大家能在其中找到错误希望给予指点:#include#include#includeusing namespace std;template class Queue{private: T back_data; stack m_stack1; stack m_stack2;public: Queue() { }原创 2013-01-04 17:59:32 · 1926 阅读 · 0 评论 -
从1到n的平方,按照从小到大,顺时针打印
首先看个例子,就是n=3的时候, 1 2 3 8 9 4 7 6 5然后是n=4的时候,原创 2012-09-19 21:24:08 · 1998 阅读 · 0 评论 -
c语言之不再害怕sizeof(struct)
程序员在面试的时候经常会碰到一些题目,给出一个结构体,然后sizeof它一下,问值是多少?比如给出下面这样一个结构体:struct test{ char a; short b; char c; int d;}; 也许一些刚开始学习c语言的同学就会毫不犹豫的把struct当中每个变量所占用的空间相加,等到的结果是8。之后结果就错了。为什么呢,首先让把原创 2013-03-14 12:04:40 · 10252 阅读 · 2 评论 -
c语言之c语言基础知识
1,“\”引起的错误:在我们现在的编译器中如果写下面这段程序int main() { // create file in c:\ ofstream outupt("test.txt"); }编译就会用字符的颜色来提示我们,这两行内容都被当做了注释的内容,但是如果在vim下编写程序,就不会出现代码颜色不一样的问题,导致程序出错,是什么原因呢,是因为"\"的问题,它在c++原创 2013-03-13 11:09:00 · 3930 阅读 · 0 评论 -
ping代码
#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#define MAX_PACKET_SIZE 4096static int max_packet_num = 4;ch原创 2013-03-17 17:36:20 · 2054 阅读 · 6 评论 -
读effetive c++笔记之对象传递和对象返回
先写出关于对象传递和对象返回的总结:相对函数来说,如果是传递对象请使用pass-by-reference 而对象返回请使用pass-by-value. 为什么对象传递的时候要用pass-by-reference,而不用pass-by-value呢,举个例子,如下:#include#includeusing namespace std;class Person {p原创 2013-04-19 10:43:37 · 1282 阅读 · 0 评论 -
关于C/C++中的trigraph
先用简单的话讲一下什么是trigraph吧,这样不会一上来就是没人看得懂的话,trigraph是三字母词,又叫三连字。 言归正传,总得来说,thrgraph是C/C++ 为了照顾老一辈的"无产阶级革命家"而出现的,当时他们的条件极其艰苦,键盘上缺了很多键,无法输入以下九个字符: # \ ^ [ ] { } | ~由此推才出现了 trigraph .原创 2013-05-17 16:00:58 · 2006 阅读 · 0 评论 -
不要使用库函数,写出void *memcpy(void *dst, const void *src, size_t count),其中dst是目标地址,src是源地址。
拷贝的时候要注意源内存地址和目的地址之间的关系,就是源内存地址和目标地址是否交叉。1,如果没有交叉的情况,那直接循环拷贝就可以了。2,如果有交叉的情况,交叉的情况也分为两种第一种如图所示:这种情况是:src>=dst&&src第二种如图所示:这种情况就是:dst>src&&dst下面以数组:int arr[] = {0, 1, 2, 3, 4, 5, 6原创 2012-10-17 09:51:15 · 5951 阅读 · 5 评论 -
atof的实现
atof是atoi的拓展实现,本人用c语言实现的,挺简单的,只是为了能够记录自己的学习历程,或者能给大家帮上一下小忙,心里就满足了。#include#include#includeint is_digit(char ch){ if(ch>='0'&&ch<='9') return 1; else return 0;}int is_space(char ch){ if原创 2012-10-15 21:11:48 · 7571 阅读 · 0 评论 -
优酷土豆合一网题---构造函数和虚构函数的顺序
class B{public:B(){cout}~B(){cout}};struct C{public:C(){cout}~C(){cout}};class D:public B{private:C c;public:D(){cout}~D(){cout原创 2012-09-13 16:24:31 · 845 阅读 · 0 评论 -
求两个单链表的交点
这个面试经常会碰到的题目,判断两个单链表是否相交。个人理解的也不是很深,零零散散的从网上找答案,并把所偶看到的整理了一下,希望对大家有帮助。判断两个单链表是否相交共有三种情况:1,两个单链表都没有环。2,两个单链表中 一个有环,一个没有环。3,两个链表都有环。看第一种情况,连个单链表相交,只能是y型相交,不可能是x型相交,理由如下,有两个链表,La,Lb,他们的交点设为p吧,假原创 2012-09-16 16:55:39 · 8379 阅读 · 0 评论 -
一个字符串转化为整数
http://blog.csdn.net/v_JULY_v/article/details/6347454(原博文地址)将字符串转化成数字要考虑很多问题:1,字符串是否为空;2,字符串的开头有可能不是数字的字母形式,而是‘+’或者'-';3,字符串中有可能不是数字对应的字母;4,字符串转换之后有可能越界。下面给出代码:比较欣赏的是其中的assert.#include#include转载 2012-09-16 21:41:26 · 532 阅读 · 0 评论 -
判断输入的字符串是否为ip地址
首先给出一个c函数的原型:int sscanf(const char *buffer,const char *format,[argument ]...)它的返回值是参数的数据,也就是argument的个数,buffer:存储的数据,format:格式控制字符串,argument:选择性设定字符串。这个程序从标准流读取数据,可以进行无限制的输入。下面贴出代码,然后引出另外一个问题,将字符串ip转换原创 2012-10-08 12:41:51 · 4731 阅读 · 0 评论 -
使用trie树统计单词出现的频数
首先给出trie树的原理:trie树是以空间换取时间,利用字符串的公共前缀来降低查询开销。举个例子:add,addition,这两个单词,他们的公共前缀是add,应用trie数进行存储的时候,add只会被存储一次,如果以add为前缀的单词很多,这样就节省了很多的存储空间。trie树的性质:1,字符种数决定trie中branch的个数,以单词为例,共有26个英文单词,那么每个节点中会有26个原创 2012-09-18 16:05:14 · 3823 阅读 · 2 评论 -
sizeof问题
void Func(char str_arg[100]) { printf("%d\n",sizeof(str_arg)); } int main(void) { char str[]="Hello"; printf("%d\n",sizeof(str)); printf("%d\n",strlen原创 2012-09-19 21:26:18 · 2311 阅读 · 0 评论 -
给定一整型数组,若数组中某个下标值大的元素值小于某个下标值比它小的元素值,称这是一个反序。
感谢此博客:http://blog.csdn.net/luno1/article/details/8001892作者,作者提供了很好的解题思路,下面给出作者所提到的两种方法的代码,从中可以看到如果不应用归并排序,那么时间复杂度就是1+2+....+n-1,即为O(n^2).而第二种方法就是O(nlogn).下面给出代码。通过对两个方法的同时调用,得到的结果是一致的,说明应用归并排序求得的结果正确。转载 2012-09-22 15:33:31 · 2699 阅读 · 0 评论 -
输入一个安升序排列的数组和一个数,在数组中找两个数,使它们的和正好是给定的那个数。o(n)
此题要求在O(n)时间内求得结果,具体思路为,设定两个指针,一个指针first指向数组的第一个元素的位置,另一个last指向数组最后一个元素的位置。首先计算sum=*first+*last,将计算的结果和给定的数进行比较,假设给定的数位dest,如果sum大于dest,那么可以根据给定数组按升序排列的性质分析出,肯定是因为数组的最后一个元素的关系,要找一个比last指向的元素小的数,那么指针就要向原创 2012-09-19 21:28:39 · 4932 阅读 · 0 评论 -
给定一个数字的十进制形式,求出用二进制表示次数时,其中bit位为1的个数
此问题我知道有两种的解答方法,一个是通过移位,一个是通过&。1,#includevoid main(){ int a=16; int count=0; while(a>0) { if(a&0x1==1) count++; a=(a>>1); } printf("%d\n",count);}上面是通过移位的形式,很容易理解。2,是通过与的形式,即把va原创 2012-09-22 19:04:14 · 1761 阅读 · 0 评论 -
原有一组数据区间段,给定一个区间,判断此区间是否和其他区间相交
此题为海豚浏览器的一个笔试题,当时做的时候感觉挺难,没想出来,后来考完试回来一想,觉得自己太粗心大意了,既然一个不太难的题都没有想到,追悔莫及。用一句话来表达自己对编程的理解:coding as saying~例如给定三个区间:(2,4) (5,6) (7,9)然后又输入一个区间 :(3.5,5),则可以断定此区间和上述区间中 (2,4)有相交区间。在此多说一句,此问题我们不考虑原创 2012-09-22 20:28:23 · 8033 阅读 · 0 评论 -
找出字符串中最长的数字字符串
要求,给定一串字符串,找出其中最常的数字字符串。比如,给定字符串abc123bcd234567d,则最终结果输出为234567。#include#include#includechar* get_max_num_string(char *str){ char *begin; char *temp,*final; int count; int maxLen=0; begin原创 2012-09-22 19:19:33 · 1641 阅读 · 0 评论 -
求矩形交集的面积
转载牛人的文章并不是为了假借他人的才能来炫耀自己,个人是为了能够在想起该问题的时候看着方便,不用到处去找,积累下来。以后是原文的出处,此人为牛人。http://blog.csdn.net/v_july_v/article/details/7974418#comments在一个平面坐标系上,有两个矩形,它们的边分别平行于X和Y轴。其中,矩形A已知, ax1(左边), ax2(转载 2012-09-22 21:07:37 · 2853 阅读 · 0 评论 -
简单实现thread pool
网上看得代码,两个小时时间改进一下源代码,增加log机制:#ifndef __thread_pool_h__#define __thread_pool_h__#include typedef struct work_s { void* (*routine)(void*); void* args; struct work_s* next;}w转载 2015-01-20 16:34:58 · 2525 阅读 · 0 评论