C语言编程
gxdwrj
这个作者很懒,什么都没留下…
展开
-
PYthon多线程服务器
分为两部分,一部分用来更新数据,另一部分用来响应客户端的请求。from SocketServer import TCPServer, StreamRequestHandlerfrom time import ctimefrom SocketServer import ThreadingTCPServerimport tracebackimport threadingMut原创 2014-09-21 23:23:10 · 888 阅读 · 0 评论 -
扑克牌顺子问题
#include "stdafx.h"#include "iostream"#include #include using namespace std;void GetMaxMin(const set & setNum, int &nMax, int &nMin){ nMin = 13; nMax = 1; set::const_iterator iter = setNum.b原创 2014-04-08 19:47:11 · 740 阅读 · 0 评论 -
n个人报数退出问题,数到m退出,最后剩下的是几号
#include "stdafx.h"#include "iostream"using namespace std;int last_people(int n,int m){ int *p = new int[n]; for (int i = 0;i < n; i ++)//编号// *(p+i) = i + 1; int k = 0,out_of_line = 0; int原创 2014-03-28 21:29:58 · 1084 阅读 · 0 评论 -
求数组中第k小的数,有快速排序的验证
// The_Least_K_number.cpp : 定义控制台应用程序的入口点。//数组中第k小的数,例如a[1000]中第250小的数//#include "stdafx.h"#include using namespace std;void swap(int *p, int *q){ int temp = *p; *p = *q; *q = temp;}int原创 2014-09-23 16:41:22 · 688 阅读 · 0 评论 -
最大子序列、最长递增子序列、最长公共子串、最长公共子序列、字符串编辑距离
http://www.cnblogs.com/zhangchaoyang/articles/2012070.html最大子序列、最长递增子序列、最长公共子串、最长公共子序列、字符串编辑距离原创 2014-09-13 21:05:05 · 724 阅读 · 0 评论 -
浮点数在内存中的存放方式
C语言和C#语言中,对于浮点类型的数据采用单精度类型(float)和双精度类型(double)来存储,float数据占用32bit,double数据占用64bit,我们在声明一个变量float f= 2.25f的时候,是如何分配内存的呢?如果胡乱分配,那世界岂不是乱套了么,其实不论是float还是double在存储方式上都是遵从IEEE的规范的,float遵从的是IEEE R32.24 ,而dou原创 2014-09-23 20:45:58 · 806 阅读 · 0 评论 -
String类
// StringClass.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include "iostream"#include "string"using namespace std;class CMyString{public: CMyString(char * pData = "denggaoxiang"); CMyString(原创 2014-09-23 20:47:44 · 626 阅读 · 0 评论 -
字符串匹配算法
字符串匹配算法有很多种,最为常用的有KMP算法、普通算法。1、普通算法:此算法是效率最低的算法,时间复杂度为O(NM)。程序如下:bool str_match(const char * str1, const char * str2)//O(P*T){ assert(str1 != NULL && str2 != NULL); int k = 0; for (unsigned原创 2014-10-07 14:35:31 · 806 阅读 · 0 评论 -
堆的相关算法
堆是一种特殊的二叉树,它具有以下两个性质:1、每个节点的值大于或等于其每个子节点的值;2、该树完全平衡,最后一层的叶子都处于最左侧的位置。有最大堆和最小堆之分,以上定义是最大堆的定义,最小堆的定义如下:1、每个节点的值小于或等于其每个子节点的值;2、该树完全平衡,最后一层的叶子都处于最左侧的位置。本文实现了堆的建立、删除、插入、堆排序。本文中的例子以最大堆为原创 2014-10-07 15:40:36 · 875 阅读 · 1 评论 -
字符串和数字的全排列问题、前i位被i整除问题
// 全排列问题.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include using namespace std;templatevoid swap(T *str1,T *str2){ T temp; temp=*str1; *str1=*str2; *str2=temp;}void permStr(char *str,原创 2014-10-09 14:30:46 · 831 阅读 · 0 评论 -
图解TCP/IP协议
本文通过两个图来梳理TCP-IP协议相关知识。TCP通信过程包括三个步骤:建立TCP连接通道,传输数据,断开TCP连接通道。如图1所示,给出了TCP通信过程的示意图。图1 TCP 三次握手四次挥手图1主要包括三部分:建立连接、传输数据、断开连接。1)建立TCP连接很简单,通过三次握手便可建立连接。2)建立好连接原创 2014-09-24 10:44:35 · 2601 阅读 · 3 评论 -
时间复杂度为O(N),空间复杂度为O(1)的排序算法
#include "stdafx.h"#include "iostream"using namespace std;/*//hashSort排序算法的时间复杂度为O(N),空间复杂度为O(1)//在数字范围有限制的情况下,是有一个这样的算法的,只需要用一个数组记录每个数字出现次数就可以了。//假定你的数字范围在0到65535范围之内,定义一个数组count[65536](这个空间是常量原创 2014-04-10 18:28:49 · 2747 阅读 · 0 评论 -
二叉树问题
// mirror_of_search_tree.cpp : 定义控制台应用程序的入口点。//二叉树的镜像实现,////二叉树的广度优先遍历////中序遍历////队列////广度优先遍历//#include "stdafx.h"#include "iostream"#include "queue"using namespace std;struct BSTnode{int data;int原创 2014-04-09 20:42:53 · 762 阅读 · 0 评论 -
整数中二进制1的个数
题目:输入一个整数,求该整数的二进制表达中有多少个1。例如输入10,由于其二进制表示为1010,有两个1,因此输出2。分析:这是一道很基本的考查位运算的面试题。包括微软在内的……一个很基本的想法是,我们先判断整数的最右边一位是不是1。接着把整数右移一位,原来处于右边第二位的数字现在被移到第一位了,再判断是不是1。这样每次移动一位,直到这个整数变成0为止。现在原创 2014-04-09 18:27:15 · 710 阅读 · 0 评论 -
四种排序算法
#include "stdio.h" int a[10] = {10,9,8,7,6,5,4,3,2,1}; display(int a[],int n){ int i; for(i = 0; i printf("%d ",a[i]); printf("\n原创 2013-06-29 12:37:31 · 569 阅读 · 0 评论 -
指针传递、值传递和引用的应用
指针传递和值传递在C语言程序中,我们一般只关注变量的值的变化,不会去关注变量的地址。由此带来的问题是对以指针作为参数的函数与以变量作为参数的函数搞不清所以然,这几天正在看指针,思考了怎样去区分指针传递地址和值传递。下面以三个简单的程序来说明这个问题。一、值传递:#include "iostream"using namespace std;main(){原创 2013-06-29 12:34:32 · 634 阅读 · 0 评论 -
volatile 的用法
一:告诉compiler不能做任何优化 比如要往某一地址送两指令: int *ip =...; //设备地址 *ip = 1; //第一个指令 *ip = 2; //第二个指令 以上程序compiler可能做优化而成: int *ip = ...; *ip = 2; 结果第一个指令丢失。如果用volatile, compiler就原创 2013-06-29 12:15:32 · 573 阅读 · 0 评论 -
快速排序算法简单易懂实现
void swap(int *p1, int *p2){ int temp; temp = *p1; *p1 = *p2; *p2 = temp;}int partition(int data[], int lo, int hi)//data[lo]--data[hi]{ int i, j; int key = data[hi]; i = lo; for(j = lo;原创 2014-02-23 20:07:32 · 761 阅读 · 0 评论 -
str to int 转换
#include "stdafx.h"#include "iostream"#include "cassert"using namespace std;long int str_to_int(char * str){ assert(str != NULL); long int sum = 0; char flag = '0'; if(*str == '+') { flag原创 2014-03-28 21:26:52 · 992 阅读 · 0 评论 -
1+2+3+……+n的非循环解法
#include "stdafx.h"#include "iostream"using namespace std;class Temp{public: Temp() { ++N; Sum += N; } /* //在类没有实例化对象之前,如果想使用static数据成员,只能使用static成员函数// */ static void Reset() { N原创 2014-03-28 21:32:38 · 865 阅读 · 0 评论 -
n皇后问题
#include "stdafx.h"#include "iostream"using namespace std;class ChessBoard{public: ChessBoard(); ChessBoard(int); void findSolutions();private: const bool available; const int squares, nor原创 2014-03-28 21:33:57 · 657 阅读 · 0 评论 -
数组逆序算法
有整形数组A有n个数;那A逆序:例如A={1,2,3,4}经过代码处理后变为A={4,3,2,1};要求代码简介(写出代码。void revense(int * a,int n) {for(int i=0; i{a[i]=a[i]+a[n-i-1];a[n-i-1]=a[i]-a[n-i-1];a[i]=a[i]-a[n-i-1];}原创 2014-03-28 21:01:37 · 570 阅读 · 0 评论 -
在VC/MFC中嵌入Google地图——图文并茂
最近需要实验室需要将在无人机地面站中嵌入地图,在网上找了很多资料,终于有些眉目了,首先,做这个需要用到的知识有,MFC控件、MFC类库、JavaScript脚本语言,Google API、Google离线地图;由于google离线地图不怎么会,首先从google在线地图开始。下面总结一下这几天搞google地图的步骤,有附图,对MFC和JS脚本语言不懂的同学有用。在线Google 地图原创 2014-05-01 20:27:01 · 5218 阅读 · 4 评论 -
去掉英文句子中重复出现的单词和标点符号
#include "stdafx.h"#include "iostream"#include "sstream"#include "map"#include "string"#include "list"#include "vector"#include using namespace std;int main(){ string inputst原创 2014-04-02 10:28:10 · 2119 阅读 · 0 评论 -
C++中的单例模式 ,类只构造5次的解法
C++中的单例模式 单例模式也称为单件模式、单子模式,可能是使用最广泛的设计模式。其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。有很多地方需要这样的功能模块,如系统的日志输出,GUI应用必须是单鼠标,MODEM的联接需要一条且只需要一条电话线,操作系统只能有一个窗口管理器,一台PC连一个键盘。 单例模式有许多种实现方法,在原创 2014-04-23 18:38:43 · 880 阅读 · 0 评论 -
Hash表的扩容(转载)
Hash表(Hash Table) hash表实际上由size个的桶组成一个桶数组table[0...size-1] 。当一个对象经过哈希之后,得到一个相应的value , 于是我们把这个对象放到桶table[ value ]中。当一个桶中有多个对象时,我们把桶中的对象组织成为一个链表。这在冲突处理上称之为拉链法。 负载因子(load factor)原创 2014-10-09 23:45:59 · 1676 阅读 · 0 评论