-链表- 是一种物理存储单元上非连续.非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的.链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成.每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域. 相比于线性表顺序结构,操作复杂.线性表的链式存储表示,有一个缺点就是要找一个数,必须要从头开始找起,十分麻烦. -哈希表- 概念 哈希表(Hash Table)也叫散列表,是根据关键码值(Key Value)而直接进行访问的数据…
原码,补码,反码的概念及Java中使用那种存储方式: 原码:原码表示法是机器数的一种简单的表示法.其符号位用0表示正号,用:表示负号,数值一般用二进制形式表示 补码:机器数的补码可由原码得到.如果机器数是正数,则该机器数的补码与原码一样:如果机器数是负数,则该机器数的补码是对它的原码(除符号位外)各位取反,并在未位加1而得到的 反码:机器数的反码可由原码得到.如果机器数是正数,则该机器数的反码与原码一样:如果机器数是负数,则该机器数的反码是对它的原码(符号位除外)各位取反而得到的Java中使用补…
不多说,直接上干货! 首先来说一个非常形象的例子,来说明下数组和链表. 上体育课的时候,老师说:你们站一队,每个人记住自己是第几个,我喊到几,那个人就举手,这就是数组. 老师说,你们每个人记住自己前面的人和后面的人,然后老师只知道第一人是谁. 然后你们各自由活动,老师要找某一个人,是不是每次都是从第一个开始往自己身后的人开始传达?这就是链表. 老师说: 大家1,2,3,4报数,凡是报1,为1队,凡是报2的为2队.......  这就是散列(哈希).而这个4就相当于预定义好的桶的个数. 程序中,存…
方法一:双指针 解题思路 假设链表存在相交时,headA 的长度为 a + c,headB 的长度为 b + c.如果把 headA 连上 headB,headB 连上 headB 的话,当遍历这两个新链表时有: \[(a + c) + (b + c) = (b + c) + (a + c) \] 而 \(a + c + b = b + c + a\),就出现相交的位置,因为 c 是相交部分的长度. 假设链表不相交,那么最后也会"相交","相交"于链表的尾部,即 n…
参考资料 <算法(java)>                           — — Robert Sedgewick, Kevin Wayne <数据结构>                                  — — 严蔚敏   为什么要使用哈希表 查找和插入是查找表的两项基本操作,对于单纯使用链表,数组,或二叉树实现的查找表来说,这两项操作在时间消耗上仍显得比较昂贵. 以查找为例:在数组实现的查找表中,需要用二分等查找方式进行一系列的比较后,才能找到给定的键…
互斥 互斥访问是并发编程要解决的核心问题之一. 有许多种方法可以满足临界区的互斥访问.大体上可以分为三种, 一种是软件方法,即由用户程序承担互斥访问的责任,而不需要依赖编程语言或操作系统,譬如Dekker算法.Peterson算法等,通常这种方式会有一定的性能开销和编程难度. 第二种是操作系统或编程语言对互斥的原生支持,譬如Linux中的mutex.Java语言的synchronized. 最后是硬件上的特殊指令,譬如著名的CAS.这种方式开销最少,但是很难成为一种通用的解决方案,通常操作系统或…
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure FormCreate(Send…
对照前面介绍过的内核通知链.链表,本章我们将要介绍的哈希表的初始化和定义也是如出一辙的: 点击(此处)折叠或打开 定义并初始化一个名为name的哈希链表表头 #define HLIST_HEAD(name) struct hlist_head name = { .first = NULL } 初始化一个已经定义好的哈希链表,其中ptr指向哈希表头的地址 #define INIT_HLIST_HEAD(ptr) ((ptr)->first = NULL) 其中,HLIST_HEAD_INIT一般这…
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! HASH 哈希表(hash table)是从一个集合A到另一个集合B的映射(mapping).映射是一种对应关系,而且集合A的某个元素只能对应集合B中的一个元素.但反过来,集合B中的一个元素可能对应多个集合A中的元素.如果B中的元素只能对应A中的一个元素,这样的映射被称为一一映射.这样的对应关系在现实生活中很常见,比如: A  -> B 人 -> 身份证号 日期 -> 星…
哈希表是通过哈希值来访问的,通过一定的内存浪费获取检索速度,在检索项时是不需要逐一检索.在编程中有一定的好处. unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; procedure…