- 博客(28)
- 收藏
- 关注
原创 Sock Demo 增加结构体的定义和传输
先来声明下本项目的设计目标吧。项目由已工作的师兄从自己现在所在项目组的任务简化抽象而来。设计一个基于Socket或基于HTTP的服务器,服务内容是提供一种简单的key/value映射关系的管理与查询下面的所有操作都是通过结构体Node来传递的:struct Node { char key[KEY_SIZE]; char value[VALUE_SIZE];};
2014-03-05 14:43:07
192
转载 Linux socket 传输和接受结构体
Linux程序设计 Linux socket send and recevie structure 最近在开发一个Linux下的聊天软件,好久没有做C语言的开发了,感觉到很多东西已经生疏了,这下又碰到用Socket传递结构体的问题,google了一下,发现也有不少朋友遇到同样的问题,所以就打算写出自己的解决办法,跟大家分享。 Socket中的send函数可以发送字符串,但不能直
2014-03-05 09:48:48
349
原创 Sock Demo
写了个Demo,完成基本的客户端服务器通信,只为熟悉函数,日后再此基础上完善并增加功能。客户端:#include#include#include#include#include#include#include#define MAXLINE 4096int main(int argc, char** argv){ int sockfd, n; ch
2014-03-03 14:44:22
167
转载 struct sockaddr和struct sockaddr_in
struct sockaddr和struct sockaddr_in这两个结构体用来处理网络通信的地址。在各种系统调用或者函数中,只要和网络地址打交道,就得用到这两个结构体。网络中的地址包含3个方面的属性:1 地址类型: ipv4还是ipv62 ip地址3 端口相应的,头文件有如下定义: C代码 include struct socka
2014-03-03 14:07:24
242
转载 Socket编程基础
一些基础内容,摘自以下blog:http://www.cnblogs.com/skynet/archive/2010/12/12/1903949.html首要解决的问题是如何唯一标识一个进程,否则通信无从谈起!在本地可以通过进程PID来唯一标识一个进程,但是在网络中这是行不通的。其实TCP/IP协议族已经帮我们解决了这个问题,网络层的“ip地址”可以唯一标识网络中的主机,而传输
2014-03-03 11:30:58
150
转载 用Java实现按字节长度截取中英文数字字符串的方法总结
方法一//jdk1.4.2.05Java代码 /** * @author cn * @param s 要截取的字符串 * @param length 要截取字符串的长度->是字节一个汉字2个字节 * return 返回length长度的字符串(含汉字) */ private static String getTit
2014-02-20 22:28:07
174
原创 微软等数据结构与算法面试100题 第三题
题目:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为 O(n)。例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,因此输出为该子数组的和18。#include using namespace st
2014-02-19 21:45:37
142
转载 微软等数据结构与算法面试100题 第二题
2.设计包含 min 函数的栈。定义栈的数据结构,要求添加一个 min 函数,能够得到栈的最小元素。要求函数 min、push 以及 pop 的时间复杂度都是 O(1)。ANSWER:Stack is a LIFO data structure. When some element is popped from the stack, the status will recover
2014-02-19 21:05:32
135
转载 C++基础 指针和引用(int*、int&、int*&、int&*、int**)
相信很多CPPers跟我一样,曾经在指针和引用里徘徊了很久很久。经常弄混指针和引用,尤其是见到如题中列出那些用法,着实是伤脑经。后来,在项目中用着用着,就能搞清楚区别了,算是会用吧。然而,对于一个Programmer,最忌讳的就是不知其所以然,会用和懂是两番天地。停留在会用的人,始终是原地打转;而懂的人,一通百通,能举一反三。本文,就如题的指针和引用的用法做一个介绍。首先我
2014-02-19 19:39:32
139
转载 微软等数据结构与算法面试100题 第一题
第一题题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的节点,只能调整指针的指向。 参考了July的整理。表示感谢。 10 / / 6 14/ / / /4 8 12 16 转换成双向链表4=6=8=10=12=14=16。分析:由上面的例子可以看到,在对于树进行遍历的时候使用了中序
2014-02-19 18:51:27
125
原创 输入一个有序数组,和一个数k,输出数组中所有三个数的和为k的组合
博文:http://blog.jobbole.com/11745/ 几种常见排序算法的视觉图。可以方便理解各种排序的思想,其中堆排序和希尔排序可能光看图看不明白,建议搜一下。博文:http://blog.csdn.net/ios_long/article/details/7019718 指针和内存相关。里面有几个很典型的小例子。最近问这事的人挺多的,这帖子里写的比较清楚。题目1:输入
2014-01-07 15:27:58
220
原创 一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如:6=1+2+3, 编程找出1000以内的所有完数。
#include #include#include#define N 1000int cal_factor(int a);int cal_sum(int data[],int m);int main(){ int number; printf("1000以内的所有完数如下所示:\n"); for(number=1;number<=1000;number++) { if
2014-01-06 17:01:56
233
原创 求cos(x)的近似值
#include #include #define PI 3.1415926double calculateCos(double x, double e);int main(){ double s, e, x; int xx; printf("input the angle:\n"); scanf("%d",&xx); x=xx*PI/180;
2014-01-06 16:45:36
463
原创 输入一个字符串,输出该字符串中字符的所有排列
#include #include void exchange(char *a,char *b);int permutation(char *str,int start,int end);int main(){ int end; char a[100]; printf("Please input an string!\n"); scanf("%s",&a
2014-01-06 16:05:49
164
原创 用两个栈实现队列
题目1:(难度1) 输入一个字符串,判断它是不是回文字符串。 题目2:(难度2) 用两个栈实现队列 假设你拥有一种栈结构,使用两个栈实现下面的队列结构,要求支持 push 和 pop 操作: typedef struct Queue { Stack s1, s2; } Queue; 第一题#include #include #defi
2014-01-06 14:42:34
144
原创 实现一个简单的计算器(不要求除法)
实现一个简单的计算器(不要求除法):如输入:12+3*(5+6)*8输出:276感谢徐帅的代码,以下为改良版。#include #include #include #define LEN 100#define MAX_LEN 100typedef struct Element{ int mark;//表示当前元素是数还是操作符,1 表示数,-1表示操
2014-01-04 21:34:52
151
原创 阶乘因式分解 & 蛇形填数
题目1:阶乘因式分解(一) 给定两个数m,n,其中m是一个素数。 将n(0 例:n=16,m=2,则输出15题目2:蛇形填数 在n*n方阵里填入1,2,...,n*n,要求填成蛇形。例如n=4时方阵为: 10 11 12 1 9 16 13 2 8 15 14 3 7 6 5 4
2014-01-03 21:34:50
163
原创 在计算机中用图中的方块图表示迷宫,每个方块或为通道(白色),或为墙(黑色)
题目一:在计算机中用图中的方块图表示迷宫,每个方块或为通道(白色),或为墙(黑色)。所求路径必须是简单路径,即求得的路径上不能重复出现同一通道块。 题目二:设计一个二分查找函数,对输入的一个非降序的数组a和数x,若a中存在与x相等的元素,则输出此元素的下标,否则输出-1。第一题直接上panda的、#include #include struct stack
2014-01-02 19:57:41
227
原创 AB两个人玩一个游戏。先任意给定一个字母串,每个人每次从中删掉任意一个字母
AB两个人玩一个游戏。先任意给定一个字母串,每个人每次从中删掉任意一个字母,两个人轮流进行,如果剩余的字母序列是严格单调递增的(按字典序a 1 模拟这个游戏,输入任意字符串(小写),能判断输赢2 输入一字符串,如果两个人都足够聪明(即如果有赢的方案,都不会选输的方案 ),甲先开始,判断甲能赢么?今日博客:http://blog.csdn.net/flyyyri/ar
2013-12-28 14:00:28
204
原创 文件"rand_3w.txt"中有三万个随机的、各不相等的正整数,写一个函数,求第k小的数。(如1、2、3、4、5,中第3小的数为3)
1. 文件"rand_3w.txt"中有三万个随机的、各不相等的正整数,写一个函数,求第k小的数。(如1、2、3、4、5,中第3小的数为3)2. 博文中第一个是关于二级指针的,自己写下二级指针删除单向链表节点的操作。http://blog.csdn.net/hjj414/article/details/17487055http://coolshell.cn/articles/1
2013-12-27 14:10:43
191
转载 Linus:利用二级指针删除单向链表
本文转自 酷壳 – CoolShell.cn 作者:LeoLinus大婶在slashdot上回答一些编程爱好者的提问,其中一个人问他什么样的代码是他所喜好的,大婶表述了自己一些观点之后,举了一个指针的例子,解释了什么才是core low-level coding。下面是Linus的教学原文及翻译——“At the opposite end of the spectrum
2013-12-27 13:08:47
122
原创 将1,2,3,4,5,6,7,8,9共9个数分成三组,组成3个三位数,且使这3个三位数构成1:2:3的比例
1. 写一函数,输入一个4位数字,要求输出这4个数字字符,但每两个数字间有一个空格。如输入1990,应输出“1 9 9 0”。 2. 将1,2,3,4,5,6,7,8,9共9个数分成三组,组成3个三位数,且使这3个三位数构成1:2:3的比例,例如:3个三位数192,384,576满足以上条件.192:384:576=1:2:3。试求出所有满足条件的3个三位数。 #i
2013-12-27 10:32:00
954
原创 给定一单链表的表头指针和指向其中一个节点的指针,要求以该指针为头将原链表逆序排列
给定一单链表的表头指针和指向其中一个节点的指针,要求以该指针为头将原链表逆序排列,例如: N1->N2->N3->N4->N5->NULL>N1->N2->N3->N4->N5->NULL pHEAD = N1,pSTART = N5,返回这个N5->N4->N3->N2->N1->NULL N1->N2->N3->N4->N5->NULL>不允许额外分配存储空间,不允许递归,可以
2013-12-25 20:22:39
263
原创 有n级台阶,每步上台阶只能上1级或者2级或者3级。问一共有多少种上完这n级台阶的走法?
难度1:要求以动态规划解决上述问题难度2:要求以递归解决上述问题#include #include #include int getMaxValue(int n,int ci[],int vi[],int w,int *list[]){ int max=0,i,j,num,t; int listTemp[n]; int content,value;
2013-12-24 16:58:46
482
原创 背包问题
腾妃新买了个容量为W的帅气包包,现有n件新衣服可装入其中。放入第i件衣服耗费的空间是Ci,得到的价值是Vi。求将哪些衣服装入大包可使价值总和最大。#include #include #include int getMaxValue(int n,int ci[],int vi[],int w,int *list[]){ int max=0,i,j,num,t;
2013-12-23 18:21:48
172
转载 Josephu问题的数学解法
今天重新做了次Josephu问题,之前做的是使用链表来实现的,直接模拟了整个过程,这次使用了数学解法。Josephu问题:编号为0到N-1的N个人围成一圈,然后从1开始报数,报到M的那个人被杀掉,剩下的人接着从1开始报数,求最后的幸存者编号。首先对于对于第一轮:0, 1, 2, ......, M-2, M-1, M, M+1, ......N-2, N-1 ---
2013-12-21 21:54:27
126
原创 n个数字(0,1,…,n-1)形成一个圆圈,从数字0开始,每次从这个圆圈中删除第m个数字
题目:n个数字(0,1,…,n-1)形成一个圆圈,从数字0开始,每次从这个圆圈中删除第m个数字(第一个为当前数字本身,第二个为当前数字的下一个数字)。当一个数字删除后,从被删除数字的下一个继续删除第m个数字。求出在这个圆圈中剩下的最后一个数字。用链表实现最简单了,数组的话可能要加很多的判断,逻辑搞不好会出错。链表的C实现不熟悉,用别人的程序改的。panda程序有点高大上。都贴在下面对比下吧。#
2013-12-21 16:30:24
167
原创 随机分配座位,共50个学生,使学号相邻的同学座位不能相邻
首先贴出原参考答案,出处不详。#include #include #include #define STUDENT_NUM 50 int student[STUDENT_NUM] = {0};bool IsInSet(int pos, int number) // bool 表达式。 作用是判断学生number 是否已分配过座位position。{
2013-12-19 19:38:59
445
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人