- 博客(12)
- 收藏
- 关注
原创 单链表的各种操作
1、从单链表中删除指定元素2、翻转单链表3、求单链表中节点个数4、查找链表中倒数第K个节点5、查找链表中间节点6、倒序打印单链表7、已知两个单链表pHead1 和pHead2 各自有序,把它们合并成一个链表依然有序8、判断一个单链表是否有环9、判断两个单链表是否相交10、求两个单链表相交的第一个节点11、已知一个单链表中存在环,求进入环中的第一个节点12...
2018-03-30 08:41:15 1368
原创 C/C++ 常用内存操作函数的实现
1、函数:memcpy原型:void *memcpy(void *dest,void const *src,size_t length) 功能:memcpy从src的起始位置复制length个字节到dest的内存起始位置说明:src和dest所指内存区域不能重叠,函数返回指向dest的指针void *memcpy(void *dest, void const *src, size_t len...
2018-03-13 14:57:09 1875
原创 C/C++ 常用字符串函数实现
1、函数名: strcpy功 能: 将参数src字符串拷贝至参数dest所指的地址用 法: char *strcpy(char *dest, const char *src);返回值: 返回参数dest的字符串起始地址说 明: 如果参数dest所指的内存空间不够大,可能会造成缓冲溢出的错误情况,在编写程序时需特别留意,或者用strncpy()来取代char *strcpy(char *...
2018-03-11 16:01:09 1905
原创 数据结构中的表
线性表 线性表是最基本、最简单、也是最常用的一种数据结构。 线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的(注意,这句话只适用大部分线性表,而不是全部。比如,循环链表逻辑层次上也是一种线性表(存储层次上属于链式存储),但是把最后一个数据元素的尾指针指向了首位结点)。 “线性”和“非线...
2018-03-28 14:26:58 1223 1
原创 常用查找算法
一、顺序搜索 顺序查找是在一个已知无(或有)序队列中找出与给定关键字相同的数的具体位置。顺序查找适合小规模的数据原理从序列的第一个元素开始,依次与关键字进行比较,直到找到目标关键字或者查找失败。 1、从表中的第一个元素开始,依次与关键字比较。 2、若某个元素与关键字匹配,则查找成功。 3、若直至最后一个元素还未匹配关键字,则查找失败。时间复杂度 ...
2018-03-26 16:02:46 1315
原创 常用排序之桶排序
桶排序假设输入数据服从均匀分布,平均情况下它的时间代价为O(n)。与计数排序类似,因为对输入数据作了某种假设,桶排序的速度也很快。具体来说,计数排序假设输入数据都属于一个小区间内的整数,而桶排序则假设输入是由一个随机过程产生,该过程将元素均匀、独立地分布在[0,1)区间上。工作原理 桶排序将[0,1)区间划分为n个相同大小的子区间,或称为桶。然后,将n个输入数分别放到各个桶中...
2018-03-24 11:12:12 351
原创 常用排序之基数排序
基数排序属于“分配式排序”,又称“桶子法”。它是通过键值的信息,将要排序的元素分配至某些“桶”中,以达到排序的作用。基数排序属于稳定性排序。时间复杂度 基数排序的时间复杂度为O(nlog(r)m),其中r为所采取的基数,而m为堆数。基本原理 将所有待比较数值(正整数)统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这...
2018-03-22 09:07:11 1133
原创 常用排序之计数排序
计数排序是一种非比较排序算法。计数排序假设n个输入元素中的每一个都是在0到k区间内的一个整数,其中k为某个整数。计数排序是稳定的。基本思想 对每一个输入元素x,确定小于x的元素个数。利用这一信息,就可以直接把x放到它在输出数组中的位置上了。例如,如果有17个元素小于x,则x就应该在第18个输出位置上。当有几个元素相同时,这一方案要修改,因为不能把它们放在同一个输出位置...
2018-03-20 15:36:05 1395
原创 关于Http协议
Web使用一种名为HTTP(超文本传输协议)的协议作为规范,完成从客户端到服务端等一系列运作流程。而协议是指规则的约定。可以说,Web是建立在HTTP协议上通信的。 HTTP协议规定,请求从客户端发出,最后服务端相应应该请求并返回。URL与URI URL(统一资源定位符)正是使用Web浏览器等访问Web页面时输入的网页地址。比如http://hac...
2018-03-18 16:19:43 319
原创 Git 常用命令总结
1、git init 初始化一个Git仓库 2、添加文件到仓库 1)、 git add <文件名> 添加一个文件 2)、git commit 将刚刚添加的文件提交到Git仓库 3、git status 掌握工作区的状态 4、git diff 查看修改后的内容 5、git log 查看提交历史 6、git ref...
2018-03-15 20:11:06 269
原创 内存对齐
内存对齐的原因1、平台原因(移植原因):不是所有的硬件平台都能访问任意地址上的任意数据的;某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常。2、性能原因:数据结构(尤其是栈)应该尽可能地在自然边界上对齐。原因在于,为了访问未对齐的内存,处理器需要作两次内存访问;而对齐的内存访问仅需要一次访问。对齐规则1、对于结构体的各个成员,第一个成员的偏移量是0,排列在后面的成员其当前偏移量必...
2018-03-09 11:20:11 279
原创 关于C预处理器宏定义
预处理器是编译过程中单独执行的第一个步骤。最常用的预处理器是:#include指令(用于在编译期间把指定文件的内容包含进当前文件中)和#define指令(用任意字符序列替代一个标记)。1. 文件包含 文件包含指令(即#include指令)使得处理大量的#define指令以及声明更加方便。在源文件中,任何形如:#include“文件名” #inclu...
2018-03-07 09:54:27 487
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人