malloc/free简化实现;malloc 和 sbrk 关系;虚拟内存机制。 一个内存管理 C 语言部分讲,UNIX部分讲,Linux部分还讲,死磕到底!!一、mallc/free简化实现上篇文章...
分类:
其他好文 时间:
2017-04-20 18:44:26
阅读次数:
284
最近在做笔试题时,遇到一道编程题:单向链表反转算法。 一共做了两个版本:递归版和迭代版。 递归版的灵感来源于《Haskell 趣学指南》中非常简洁的快速排序算法的实现。 迭代版的思想和冒泡排序有点像,又不完全一样。 ...
分类:
编程语言 时间:
2017-04-17 09:47:49
阅读次数:
249
算法概述:要求实现将一条单向链表反转并考虑时间复杂度。 算法分析: 数组法(略): 将列表元素逐个保存进数组,之后再逆向重建列表 点评:实现逻辑最简单,需要额外的内存开销。 移动指针: 通过三个指针逐个从链表头开始逐一反转链表元素的指针 点评:不需要额外的内存开销,会改变原始链表。 递归: 以递归的 ...
分类:
编程语言 时间:
2017-04-16 17:01:37
阅读次数:
137
单向链表创建 链表是动态分配存储空间的链式存储结构。 其包括一个“头指针”变量,其中第0个结点称为整个链表的头结点,头结点中存放一个地址,该地址指向一个元素,头结点一般不存放具体数据,只是存放第一个结点的地址。 链表中每一个元素称为“结点”,每个结点都由两部分组成:存放数据元素的数据域和存储直接后继 ...
分类:
其他好文 时间:
2017-04-16 13:57:54
阅读次数:
266
HashMap底层是一个Entry数组,当发生hash冲突的时候,hashmap是采用链表的方式来解决的,在对应的数组位置存放链表的头结点。对链表而言,新加入的节点会从头结点加入。 我们来分析一下多线程访问: 1.在hashmap做put操作的时候会调用下面方法: 在hashmap做put操作的时候 ...
分类:
编程语言 时间:
2017-04-15 17:07:34
阅读次数:
157
顺序容器简介: 其中array和forward_list是新C++标准增加的类型。与内置数组相比,array是一种更安全更容易使用的数组类型。而 forward_list设计目标是大道与最好的手写单向链表相当的性能,因此它没有size操作,而对其他容器,size是快速的常量时间操作。 选用容器的基本 ...
分类:
编程语言 时间:
2017-04-14 22:00:35
阅读次数:
237
hashCode 方法用于散列集合的查找,equals 方法用于判断两个对象是否相等。为什么重写了 equals 方法,还要重写 hashCode 方法?
分类:
其他好文 时间:
2017-04-04 23:42:13
阅读次数:
232
1 #include 2 #include 3 #include 4 #include 5 typedef struct node 6 { 7 int data; 8 struct node * next; 9 }linkNode; 10 typedef linkNode *pLinkNode; 1... ...
分类:
其他好文 时间:
2017-04-04 17:36:44
阅读次数:
200
双向链表 单向链表的节点都只有一个指向下一个节点的指针单向链表的数据元素无法直接访问其前驱元素逆序访问单向链表中的元素时极其耗时的操作双向链表在单向链表的基础上增加了指向前驱的指针功能上双向链表可以完全取代单向链表的使用 栈是一种特殊的线性表 栈仅能在线性表的一端进行操作栈顶:允许操作的一端栈底:不 ...
分类:
其他好文 时间:
2017-03-31 23:56:20
阅读次数:
242