
C语言
文章平均质量分 50
z_xiao_xue
这个作者很懒,什么都没留下…
展开
-
多种方法实现费波纳契数列
费波纳契数描述的问题:兔子的生长情况:1.第一个月有一对刚诞生的兔子 2.第二个月之后(第三个月初)就可以生育 3.每月每对可生育的兔子都会诞生下一对新的兔子 4.兔子不会死去原创 2016-07-23 00:36:05 · 1143 阅读 · 0 评论 -
三种I/O复用函数的比较总结
下列情况下可以用到I/O多路转接技术:1.客户端程序要同时处理多个socket。(比如非阻塞的connect技术)2.客户端程序要同时处理用户输入和网络连接。3.TCP服务器要同时处理监听socket和连接socket。(I/O复用使用最多的场合)4.服务器要同时处理TCP请求和UDP请求。5.服务器要同时监听多个端口,或者处理多种服务。(xinetd服务)I/O复用虽然可原创 2017-03-30 23:10:19 · 1322 阅读 · 0 评论 -
套接字socket实现UDP
TCP/UDP都是运输层协议,他们之间的最大区别就是TCP是面向连接的可靠传输协议,而UDP是不可靠的。UDP的主要特点:1.UDP是无连接的,发送数据不需要建立连接,因此,减少了开销和发送数据之前的时延。2.UDP使用最大努力交付,不保证可靠交付。3.UDP是面向报文的,而TCP是面向字节流的。4.UDP没有拥塞控制。5.UDP支持一对一,一对多,多对一和多对多的交互通信原创 2017-03-11 22:26:50 · 732 阅读 · 0 评论 -
I/O复用(三)---epoll机制
epoll实现机制分析:epoll是Linux特有的I/O复用函数。它在实现和使用上与select和poll有很大的差异。首先,epoll使用一组函数来完成任务,而不是单个的函数。其次,epoll把用户关心的文件描述符上的事件放在内核的一个时间表中,从而无需像select和epoll那样每次调用都要重复传入文件描述符和集或事件集。但epoll需要使用一个额外的文件描述符,来唯一标识内核中的这个原创 2017-03-21 13:34:15 · 784 阅读 · 0 评论 -
面试热门题:字符串左旋右旋
面试的时候有很多这种左旋或者右旋的题目,今天我就把这个题目用不同的方式探讨一下例题:请实现字符串右循环移位函数,比如:"abcdefg"循环右移3位就是"efgabcd";第一种方法:三目旋转法,三目旋转法的思想就是先把字符串整个逆置,然后需要旋转几位就逆置前几个,最后逆置后原创 2016-06-01 01:34:35 · 597 阅读 · 0 评论 -
排序算法(一):冒泡排序
排序的算法有很多,例如直接插入排序,希尔排序,冒泡排序,选择排序,快速排序,堆排序等等。最简单基础就是冒泡排序了,关于排序hi有一个系列。今天是第一篇,主要讲冒泡排序算法思想以及从各个方面对它进行优化。冒泡排序:原理举例:设数组长度为N。1.比较相邻的前后二个数据,如果前面数据大于后面的数据,就将二个数据交换。2.这样对数组的第0个数据到N-1个数据进行一次遍历后,最大原创 2016-06-01 13:04:42 · 573 阅读 · 0 评论 -
排序算法(二):选择排序
之前给大家分享了排序算法里面比较简单的冒泡排序,今天来分享一下选择排序的算法选择排序的思想:(以升序为例)在一组数中选出最大的数放到第一个位置,或者选出最小的数放到最后一个位置,在选取剩余元素的最大数放到第二个位置,或选出剩余元素中的最小值放到倒数第二哥位置,依次往下选取,直到遍历完数组为止。具体如图所示:代码实现:void SelectSort(int *a, size_t size原创 2016-06-02 13:36:22 · 672 阅读 · 1 评论 -
C语言到c++的第一步 注释转换
1.普通情况 /*int i = 0; 2.换行问题 /*int i = 0;*/int j = 0; /*int i = 0;*/ int j = 0; 3.匹配问题 /*int i = 0;/*xxxxx*/原创 2016-06-04 23:16:40 · 336 阅读 · 0 评论 -
单链表的简单操作
单链表是C语言,c++和数据结构中的很重要的一个部分,也有很多实现它的方法,这些算法代码的实现都大同小异,我在这里就用c语言和c++两种不同的方法实现一下链表的基本操作。下面是c++和C语言的两种链表结构的定义c++方式#include #include #include typedef int DataType;typedef struct SListNode{ DataT原创 2016-06-12 12:36:03 · 665 阅读 · 0 评论 -
排序算法(三)插入排序
插入排序今天来更新排序算法中的第三种算法------插入排序一,插入排序介绍 插入排序是基于比较的排序。所谓的基于比较,就是通过比较数组中的元素,看谁大谁小,根据结果来调整元素的位置。因此,对于这类排序,就有两种基本的操作:①比较操作; ②交换操作其中,对于交换操作,可以优化成移动操作,即不直接进行两个元素的交换,还是用一个枢轴元素(tmp)将当前元素先保存原创 2016-06-13 14:27:43 · 352 阅读 · 0 评论 -
模拟实现string库函数
#include #include #include int my_strncmp(const char* str1, const char* str2, int size){ assert(str1); assert(str2); int i = size; while (*str1 == *str2 && i--) { if (*str2 == '\0') {原创 2016-06-18 22:32:46 · 484 阅读 · 0 评论 -
模拟实现mem函数
#include #include #include void* my_memcpy(void* dst, const void* src, size_t count)//内存拷贝函数{ assert(dst); assert(src); char* ret = (char*)dst; char* _dst = ret; char* _src = (char*)src;原创 2016-06-19 16:48:34 · 410 阅读 · 0 评论 -
热门题---链表面试题总结
单链表一直是面试中的重点,今天就把常见的单链表面试题总结了一下冒泡排序:先将tail置为空,让prev和cur不停的往前走,条件cur不等于tail 控制每一趟冒泡,找出每次的最大值,再用prev不等于tail控制每一层冒泡,每趟交换完成后将prev的值给tail,让tail 不停的往前走,代码实现void Bubble(pLinkList list){ pLink原创 2016-06-24 00:34:20 · 374 阅读 · 0 评论 -
字符数组的翻转
eg:将“student a am i”翻转变为"i am a student"思路:将整个数组翻转,再把每个单词都翻转过来就可以了#define _CRT_SECURE_NO_WARNINGS 1#include #include //student a am i --> i am a studentvoid MyReverse(char* start, ch原创 2016-07-21 01:23:38 · 760 阅读 · 0 评论 -
简单的小游戏---代码实现三子棋
大家都玩过五子棋吧,在这里,我就来实现一个比五子棋低版本的小游戏,三子棋,仅供娱乐哦!!原创 2016-07-22 17:41:55 · 793 阅读 · 0 评论 -
面试热门题C与C++的区别-------指针和引用
在面试过程中,C语言和C++的区别总是面试官的侧重点,而指针和引用更是容易被问到,指针和引用的区别很简单,但很少有人能有全面的,有层次有条理的回答这个问题,所以有条理的总结归纳就显得尤为重要。先来了解什么是指针,什么是引用指针:存储内存中某一块空间地址的变量。引用:引用不是定义一个新变量,而是给一个已经定义的变量起一个新的别名。定义的格式:指针:类型 *变量名 = 已有变量地址原创 2016-09-11 21:34:29 · 2019 阅读 · 0 评论 -
I/O复用(一)
I/O复用使得程序能同时监听多个文件描述符,这对提高程序的性能至关重要。通常,网络程序在下列情况下需要使用I/O复用技术。 1.客户端程序要同时处理多个socket。 2.客户端程序要同时处理用户输入和网络连接。 3.TCP服务器要同时处理监听socket和连接socket。 4.服务器要同时监听多个端口,或者处理多种服务。I/O复用虽然能同时监听多个文件描述符原创 2017-03-17 10:52:13 · 510 阅读 · 0 评论