- 博客(13)
- 资源 (2)
- 收藏
- 关注
原创 好用的valgrind
对于这个valgrind,目前我仅仅使用了它的检查内存是否泄漏的问题,我们经常在写代码的时候,如果只malloc开辟了空间,而忘记free释放空间的话就会内存泄漏。如果用这个工具的话,那么就简单多了。 valgrind的官网下载http://valgrind.org/downloads/ 网上也有很多安装教程,我的主机是centos6.5。我在这个上面安装成功了。
2015-12-22 09:28:50 892
原创 广义表的相关操作
这次是广义表,概念也不想多说了,网上很多,重复么啥意思,这次广义表的创建让我感觉几点处理的很巧妙,比如判断广义表的括号是否匹配呢,我的第一反应就是栈呢,因为之前写过逆波兰表达式,就是用栈处理了括号,但是这次就是用一个变量flag处理了,遇到左括号++,遇到右括号--,判断最后是否为0。 也许把广义表处理的最麻烦的地方哪个就是字符串了,把字符串专化成真正的广义表,也就是真实的存
2015-12-14 20:25:03 1283
原创 正确的二分查找
之前原来自己写的二分查找是错误的,估计大多数人写的二分查找也和我写的差不多吧,下面这链接是我之前写的错误的二分查找,现在来正确的,这个还是在july的树上看到的,感觉这个人特别厉害。 关键的一步还是mid = left + ((right-left)>>1);因为如果我们用两个很大合理的数相加,那么就会越界啊,这里巧妙的应用的位运算。 还有一点,尽量不要什么魔鬼数字,就是
2015-12-11 10:11:10 769
原创 动态数组的实现 及 迭代器
今晚把之前的动态数组敲了一遍,感觉还是有点生疏啊,都忘记的差不多了,开辟一个void **data的动态数组,里面存的是void *,这样也实现了通用性,然后呢里面用到了函数指针,写了接口,用户可以自己写,比如void (*free)(void *ptr),还有迭代器,可以遍历任何东西,今晚先用迭代器遍历这个动态数组,为了方便,我全部用存成整数,简单方便。 其实,这个里面呢,还有一
2015-12-10 21:13:39 1757
原创 双端链表实现hash(哈希)
hash表又称为散列表,很多的地方都用到了这个东西,js中的对象,java中的键值对,python中的字典,hash结合了数组和链表的优点,在查找,存储有很大的优势。以我的理解来说,通过相应的键,找到相对应的值,数组的优点快啊,存储采用链表,节省空间,插入删除方便,这次我用整数模拟一下,简单的hash函数,仅仅对数字进行取余,把取余相同的放在一个区域里面,也就是说,一个键可以对应多个值 h
2015-12-09 18:39:25 1436
原创 双端链表实现队列
这次实现队列还是用到了双端链表,和上篇的一样,也是双端链表实现的,简单么,下面写好了,上面直接调用。现在redis竟然是用C语言写的,而且底层实现也是双端链表,这是非常重要滴 queue.h文件#ifndef _QUEUE_H_#define _QUEUE_H_#include "tools.h"typedef struct Queue{ Dlist *dlist; /
2015-12-09 17:59:51 727
原创 用双端链表实现通用栈
这篇 还是双端链表基础上实现,这里面只是在套组件,套写过的东西,就需要重新组合一下而已,也许以后在公司也就是这个样子,感觉C语言越来越强大了,还需要好好搞搞C语言,关于栈,不想多BB,感觉说啥概念没意思了,也就是上代码,这是如何实现的 stack.h文件#ifndef _STACK_H_#define _STACK_H_#include "dlist.h"#include "
2015-12-09 17:48:58 901
原创 双端链表
这次的双端链表还是比较通用的,因为前面的链表没有一点通用行,我的数据类型就仅仅在int的范围,这次通用的话,就可以存储各种数据类型,double,char,int , 图,二叉树,等等,起始只需要一个void *既可以搞定,因为这个可以指向任意的数据类型。 双端链表头文件的声明dlist.h#ifndef _DLIST_H_#define _DLIST_H_#include "too
2015-12-09 17:40:10 905
原创 带有控制信息的单链表
上一篇写了单链表,如果认真敲了代码,就可以看出里面从在很大的问题,想要删除尾部节点,必须还要遍历的链表,这时间复杂度也太高了吧,因此这篇会设计一个带有控制信息的单链表,一个指针指向链表的头部,一个指针指向链表的尾部,一个int变量记录链表节点的个数,这样就方便多了,主要看操作,哈哈,(最近get到主要看气质,也许长的丑才看气质,哈哈)。头文件声明ctr_list.h#ifndef _CTR
2015-12-09 17:31:00 621 1
原创 单链表的一些操作
在前一篇写了工具函数,以后的每篇几乎都会用到tools.h文件,如果在linux下编译就需要这样,举例 gcc list.c tools.c main.c -o main 把这3个文件编译链接成可执行文件main,linux下./main就可以运行了。 还是在开始提一下吧,为什么在销毁链表的时候需要用到双重指针,因为不仅要释放指针所指向的这快区域,还是把该指针释放了,因为free
2015-12-09 17:19:26 646
原创 链表开始前的准备 之 tools(工具)、包裹函数
学习链表这么长时间了,趁着今晚有时间,感觉总结一下,这次真感觉跟着驰哥学习了不少的东西,对于这次链表,终于有了真正意思上写C语言的感觉吧,虽然买了C语言的接口与实现,不过现在没时间看,等链表这一块完全学习完在看吧。C语言也可以写的很漂亮的,组件化思想,也就是模块化,写一个东西就在里面套、套、套模块,有点像玩积木的感觉。不过开始写链表之前,先来一篇这个东西tools,简单说就是写一个工具,方便其他文
2015-12-07 19:23:27 629
原创 搞搞阿里云 及 centos7.0 成功安装docker
说到这个阿里云,感觉这个真的不错,对于学生也比较便宜,6个月也就60元,也是非常的划算的,我在上面可以装各种镜像,如果弄错的话,重新初始化,再也不用把自己的电脑当实验品了,装坏了还要重新装系统。 接下来就开始centos7下docker的配置吧1 首先先看看你的系统不合适,直接进行安装 uname -i uname -r yum insta
2015-12-03 15:19:55 1364
原创 关于 centos下docker安装中遇到的问题 小小吐嘈一下下
昨晚也就是11月的最后一个晚上,突然意外看到docker,感觉这货还不错,于是就搞了一波,但是很多人好人多都是在ubuntu下搞的,而且内核版本也符合的docker的配置环境要求,直接无脑的apt-get一装,就开始用了,交互式的,守护式的,各种秀操作。(ps:我并对ubuntu没有恶意,只是仁者见仁,智者见智,喜欢redhat和centos罢了) 说道这里,我还是简单说说d
2015-12-03 14:37:02 1171
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人