- 博客(47)
- 资源 (9)
- 收藏
- 关注
原创 python的socket通信
一开始服务器先开,后开客户端,发现木有反应,后来自己研究发现要开两个shell才行。贴代码,菜鸟一枚,自己专研还是蛮开心的。#客户端import sockets=socket.socket()host=socket.gethostname()port=1234s.connect((host,port))print s.recv(1024)#服务器import soc
2013-04-05 23:12:46 1029
原创 调整数组顺序使奇数位于偶数前面
#include using namespace std;void transfer(int *L,int len){ //i,j指针一前一后 int i=0,j=len-1; while(i<j){ //如果L[i]为奇 if(L[i]%2==1) ++i; //如果L[j]为偶 if(L[j]%2==0) --j; if(L[i]%2==0 &
2013-03-28 19:06:59 649
原创 栈的push、pop序列
题目:输入两个整数序列。其中一个序列表示栈的push顺序,判断另一个序列有没有可能是对应的pop顺序。为了简单起见,我们假设push序列的任意两个整数都是不相等的。比如输入的push序列是1、2、3、4、5,那么4、5、3、2、1就有可能是一个pop系列。因为可以有如下的push和pop序列:push 1,push 2,push 3,push 4,pop,push 5,pop,pop,po
2013-03-28 12:33:38 795
原创 判断平衡二叉树中所需要注意的问题
发现程序有问题,问题在d1>d2?d1:d2+1上'+'的优先级高于':',所以应该改为(d1>d2?d1:d2)+1//是否为平衡二叉树#include #include using namespace std;struct node{ node *lchild,*rchild; int value;};class list{public: l
2013-03-27 22:50:52 632
原创 利用队列实现层序遍历
#include #include using namespace std;struct node{ node *lchild,*rchild; int value;};struct Node{ Node *next; node* value;};//用链队class Queue{public: Queue(); void EnQueue(node* num
2013-03-27 18:24:26 1322
原创 求二元查找树的镜像
题目:输入一颗二元查找树,将该树转换为它的镜像,即在转换后的二元查找树中,左子树的结点都大于右子树的结点。用递归和循环两种方法完成树的镜像转换。例如输入: 8 / \ 6 10 /\ /\5 7 9 11输出: 8 / \ 10 6 /\ /\11
2013-03-27 16:39:46 506
原创 异或交换时候的注意点(替代temp变量)
#include using namespace std;void reverse(char *str){ //n为字符串长度 int n=strlen(str)-1; for(int i=0;i<=n/2;++i){ str[i]=str[i]^str[n-i]; str[n-i]=str[i]^str[n-i]; str[i]=str[i]^str[n
2013-03-27 14:21:28 583
原创 翻转句子中单词的顺序
题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。例如输入“I am a student.”,则输出“student. a am I”。#include using namespace std;void reverse_part(char*,int pBegin,int pEnd);
2013-03-27 14:14:48 646
原创 二元查找树的后序遍历结果
题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。如果是返回true,否则返回false。例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果: 8 / \ 6 10 / \ / \ 5 7 9 11因此返回true。#include
2013-03-27 12:35:02 674
原创 二元树中和为某一值的所有路径(我看到网上很多答案是错的)
题目:输入一个整数和一棵二元树。从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。打印出和与输入整数相等的所有路径。例如输入整数22和如下二元树 10 / \
2013-03-27 10:48:55 938
原创 输出所有根节点到叶子节点的长度(以二叉排序树为例)
#include #include using namespace std;//节点struct node{ node *lchild,*rchild; int value;};//二元查找树class list{public: list(); //这里的m_print函数用做递归,print函数相当于外面的一个套子 void pri
2013-03-27 09:55:27 1311
原创 完全非递归方式解决二叉排序树向双向链表的转换(标准注释)
#include #include using namespace std;//节点struct node{ node *lchild,*rchild; int value;};//二元查找树class list{public: list(); void InOrder_transfer();private: node* root;};void list::
2013-03-27 08:39:54 862
原创 腾讯笔试题--递归编程(2)
题目: 对一个正整数作如下操作:如果是偶数则除以2,如果是奇数则加1,如此进行直到1时操作停止,求经过9次操作变为1的数有多少个?#include using namespace std;int count=0;void fun(int num,int step){ if(num<=0) return; if(step==1){ cout<<num<<"
2013-03-23 20:03:34 869
原创 堆排序
#include using namespace std;int L[]={0,50,40,60,30,70,10,90,80,20};//数组从L[1]开始int length=sizeof(L)/sizeof(int)-1;void Swap(int*,int,int);void HeapAdjust(int*,int,int);void HeapSort(int *L
2013-03-13 22:20:58 647
原创 在子类的构造函数中调用虚函数
#include using namespace std;class Base{public: Base() { Fuction(); } virtual void Fuction() { cout << "Base::Fuction" << endl; }};class A : public Base{public: A() { Fuction()
2013-03-11 21:25:35 1006
原创 非递归前中后序遍历(多种方式)
#include #include using namespace std;struct Node{ Node* lchild; Node* rchild; char value;};class list{public: list::list(); void PreOrder(); void InOrder(); void PostOrd
2013-03-11 16:52:01 944
原创 带有错误的非递归遍历
#include #include using namespace std;struct Node{ Node* lchild; Node* rchild; char value;};class list{public: list(); void InOrder(); void PreOrder(); void AfterOrder();private: Node
2013-03-07 23:48:30 261
原创 (++a)+=(a++)和(++a)=(++a)+(a++)的区别
#include using namespace std;void main(){ int a=4; cout<<((++a)+=(a++))<<endl; //结果为10 cout<<a<<endl; //结果为11 system("pause");}#include using namespace std;void main(){
2013-03-01 21:18:46 15163 3
原创 传递的函数数组参数中使用sizeof()的注意点
//计算最大子数组#include using namespace std;//返回最大子数组的和,复杂度为O(n)int max_sub(int a[]){ int max=a[0],temp=0; //这里使用sizeof(a)/sizeof(int)是有问题的 for(int i=0;i<sizeof(a)/sizeof(int);++i){ if(a[i
2013-02-28 23:11:56 117
原创 例题1:勇士斗恶龙
题目:你的王国里有一条n个头的恶龙,可以雇佣骑士把它杀死,村里有m个骑士,能力值为x的骑士可以砍掉一个恶龙直径不超过x的头,且需支付金币x,怎样才能杀死恶龙并且支付金币最少?(一个骑士只能砍一个头,雇佣一次)#include using namespace std;void main(){ //这里偷懒不输入了,a[]表示恶龙的头的直径,b[]表示骑士的能力值 //int a[2]=
2013-02-25 23:27:19 1795
原创 fabonacci数列非递归
#include using namespace std;bool fibonacci(int n);void main(){ cout<<"输入一个fibonacci数列的长度:"<<endl; int n; cin>>n; if(cin.fail()){ cout<<"输入有误!"<<endl; exit(-1); } fibonacci(n); system(
2013-02-25 15:38:16 225
原创 输入一个正整数n,计算出1~n之间出现1的次数
//要求:输入一个正整数n,计算出1~n之间出现1的次数#include #include using namespace std;void solve();int input();int power(int count);void main(){ solve(); system("pause");}void solve(){ int n,c
2013-02-25 12:17:31 2306
原创 腾讯的笔试题(1)
1.考虑函数原型void hello(int a,int b=7,char* pszC="*"),下面的函数调用中,属于不合法调用的是:A hello(5) B.hello(5,8) C.hello(6,"#") D.hello(0,0,"#")答案是C,经过验证,其实就是考函数的重载。2.求输出结果#includeclass CBase{
2013-02-22 15:18:39 1053
原创 如何在vs2010中修改栈的大小
上次运行程序的时候提示栈溢出,oh,my god 程序栈空间不够用了,没关系,可以设置栈的大小,默认是1MB。选择 项目->属性->链接器->系统->堆栈保留大小,然后输入你想要的栈大小即可。
2013-02-21 19:10:30 8859
转载 C++virtual的例子(2)
#include #include using namespace std;class one{protected: float a;public: one() { a=0; } virtual float f1(float num) { return num/2; } float f2(float num) { return pow(f1(num),
2013-01-25 19:00:11 563
转载 一个构造和析构函数很经典的例子(继承相关)
今天整理的时候发现了这个程序,忘了是自己写的还是网上的,就写转载吧,例子很清楚,结果是B 2 A 1 C3,看看吧,看懂了构造就差不多懂了。#include using namespace std;class A{public: A(int i) { cout<<"class A constructor "<<i<<endl; } ~A() {
2013-01-25 18:34:09 407
转载 不用加减乘除实现a+b
#include using namespace std;char* add(int a,int b){ char *c; c = (char *) a; return &c[b];}void main(){ int result; result=(int)add(20000,300); cout<<result; getcha
2013-01-21 23:26:56 812
原创 估计没几个人能看懂我的KMP算法了,搞得有点复杂,有蛮多注释
//KMP算法实现#include #include using namespace std;//我承认KMP算法我搞得逻辑太复杂了void KMP(char* a,char* b){ int next[10]={1}; int i,j,count1,count2,flag=1; //计算模式串b的next[j] next[0]=0;//如果第一位出错 next[1
2013-01-20 21:27:11 493
转载 二叉排序树转换成双向链表
// 1:构造二叉查找树; // 2:中序遍历二叉查找树,因此结点按从小到大顺序访问,假设之前访问过的结点已经调整为一个双向链表,那么 // 只需要将当前结点连接至双向链表的最后一个结点即可,访问完后,双向链表也就调整完了 #include using namespace std; struct BSTreeNode { int m_nValue;
2013-01-19 11:37:52 988
原创 二叉排序树向双向链表的转换
//将二叉排序树转换成双向链表#include using namespace std;//定义节点struct node{ int num; node* Lnext; node* Rnext;};class list{public: list(); void change(node* p); void transform(); v
2013-01-18 21:52:02 974
原创 排序二叉树实现(比昨天的版本改进了些)
#include using namespace std;struct node{ int num; node* Lnext; node* Rnext;};class list{public: list();//构造函数,为了省略直接完成list的建立 void node_insert(int n);//n代表要插入的数字 void delet
2013-01-18 11:12:02 92
原创 二叉排序树的C++实现,包括难点删除
#include using namespace std;struct node{ int num; node* Lnext; node* Rnext;};//建立二叉排序树class list{public: list(); void node_insert(); //p为要删除的节点,p0为删除节点的前一个节点,当然两节点可能重合 //fla
2013-01-17 21:15:41 2347
原创 阿里巴巴易错题(我知道内存对齐,但还是倒下了)
#pragma pack(2)#include using namespace std;class A{ int i; union U { char buff[13]; int i; }u; void foo() { } typedef char* (*f)(void*); enum{red, green, blue} color;
2013-01-16 22:28:58 753
原创 二叉排序树+中序遍历
#include using namespace std;templatestruct node{ T num; node* Lnext; node* Rnext;};templateclass list{public: list(); void node_delete(T *p); void node_insert(T *p);
2013-01-16 18:23:31 217
原创 求两有序数组是否有相同元素
//判断两个有序数组中是否存在相同的元素#include using namespace std;bool comparation(int *a,int *b){ int i=0,j=0; while(i<sizeof(a)/sizeof(int) || j<sizeof(b)/sizeof(int)){ if(a[i]==b[j]) retu
2013-01-15 19:37:42 1389
原创 单链表反转
#include using namespace std;struct node{ int num; node* next;};class list{public: list(); void print(); void turnover();private: node* p; node* q; node* head;};
2013-01-15 17:23:59 641
原创 栈的顺序存储结构的C++实现
#include using namespace std;#define max 5templateclass stack{public: stack(); bool pop(T &m); //将出栈的元素给m bool push(T n);//将元素n进栈 void print();private: T a[max]; int top;
2013-01-13 19:38:19 1317
原创 单链表的C++实现
#include using namespace std;templatestruct node{ T num; node *next;};templateclass list{public: list(); ~list(); void tranverse(); void insert_node(int place,T n);
2013-01-12 14:42:42 640
原创 对于输入(使用cin)安全性和鲁棒性的小结
今天做了微软的几道试题,发现几乎都要求输入,那么使用C++输入我想最容易的是cin了吧,还想用stringstream? 针对cin其实有很多可以研究的地方如,cin.clear(),cin.sync().你要输入一个整数,如int temp;cin>>temp;cin.fail()或者cin.good()不一定反映出错误,比如输入1.1不报错,因为temp为整形。#inc
2013-01-02 14:25:01 1141
原创 微软试题:查找数组中最小的k个元素
题目:输入n个整数,输出其中最小的k个。例如输入1,2,3,4,5,6,7和8这8个数字,则最小的4个数字为1,2,3和4。 思路:一看到这道题思路就想直接从小到大排序,那么最小的k个为前k个元素,不过这样做复杂度为o(n^2).目测解决这题的复杂度规定在o(n),所以不采纳。那么用一个数组a[k]记录所存的k个最小值需要额外的空间复杂度,那么如果允许破坏原先的数组,那么就可以在原先的数组
2013-01-02 10:34:20 542
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人