以图明志

数据结构

用单循环链表来玩一下约瑟夫环游戏

单循环链表的练习
一群小孩围成一圈,每个小孩都会带有一个随机的密码。然后设定一个数m,从第一个小孩数起,数到第m个的时候,该小孩离开。小孩离开时,其携带的密码将更新这个m值,顺序往下数的第m个小孩会继续出列。依次这样数下去,最后一个小孩是胜利者,问:胜利者是第几个小孩?

数据结构

单链表排序之选择排序

通过这个理解单链表的排序方法
单链表排序是单链表的常见编程任务之一,也是面试中经常出现的题目。单链表排序的关键是交换算法,需要额外考虑。选择排序是比较直观的排序算法之一,这里就使用选择排序实现单链表的排序。如果需要对选择排序复习一下,传送门:算法导论:选择排序的原理与实现。

数据结构

面试题:如何删除单链表的重复结点

使用三个结点完成算法
写一算法将单链表中值重复的结点删除,使所得的结果表中各结点值均不相同。解决的思路如下:建立指针p,用于遍历链表;建立指针q,q遍历p后面的结点,并与p数值比较;建立指针r,r保存需要删掉的结点,再把需要删掉的结点的前后结点相接。

数据结构

如何用PHP实现一个链表结构

数据类型的约束会不够严格
最近慢慢开始复习数据结构这一块,那么这里用PHP也写一个链表结构吧。PHP本身是弱类型的语言,数据类型的约束会不够严格。虽然下面的代码能够实现链表的基本功能,但也许会存在一些我还没注意到的缺陷。如果你有更好的方案,也可以告诉我~

数据结构

[专题] Hash魔法:哈希表的工作原理与常用操作

一种高效的数据结构
哈希表(Hash Table)的应用近两年才在NOI中出现,作为一种高效的数据结构,它正在竞赛中发挥着越来越重要的作用。 哈希表最大的优点,就是把数据的存储和查找消耗的时间大大降低,几乎可以看成是常数时间;而代价仅仅是消耗比较多的内存。然而在当前可利用内存越来越多的情况下,用空间换时间的做法是值得的。另外,编码比较容易也是它的特点之一。

数据结构

[专题] Hash魔法:分布式哈希算法

降低了数据全部被损坏的风险
哈希表把所有的东西都存储在一台机器上,当这台机器坏掉了之后,所存储的东西就全部消失了。分布式哈希表可以把一整张哈希表分成若干个不同的部分,分别存储在不同的机器上,这样就降低了数据全部被损坏的风险。分布式哈希表通常采用一致性哈希函数来对机器和数据进行统一运算。这里先不用深究一致性哈希究竟是什么。

数据结构

[专题] Hash魔法:一致性 hash 算法

consistent hashing
consistent hashing 一致性 hash 算法早在 1997 年就在论文 Consistent hashing and random trees 中被提出,目前在 cache 系统中应用越来越广泛。比如你有 N 个 cache 服务器(后面简称 cache ),那么如何将一个对象 object 映射到 N 个 cache 上呢,你很可能会采用类似下面的通用方法计算 object 的 hash 值,然后均匀的映射到到 N 个 cache。

数据结构

[专题] Hash魔法:哈希表的原理与实现

用C实现一个Hash表
一列键值对数据,存储在一个table中,如何通过数据的关键字快速查找相应值呢?不要告诉我一个个拿出来比较key啊,呵呵。 大家都知道,在所有的线性数据结构中,数组的定位速度最快,因为它可通过数组下标直接定位到相应的数组空间,就不需要一个个查找。而哈希表就是利用数组这个能够快速定位数据的结构解决以上的问题的。

数据结构

Hash(哈希或散列)知识概貌

哈希相关知识
Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。

数据结构

用PHP实现一个双向队列

学习下双向队列的定义与使用
deque,全名double-ended queue,是一种具有队列和栈的性质的数据结构。双端队列中的元素可以从两端弹出,其限定插入和删除操作在表的两端进行。双向队列(双端队列)就像是一个队列,但是你可以在任何一端添加或移除元素。而双端队列是一种数据结构,定义如下……

数据结构

实现一个栈并获取其最小元素

设计包含min函数的栈
定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。要求函数min、push以及pop的时间复杂度都是O(1)。这里给出整个栈的简单实现,使用链式栈,利用辅助栈提供min值查询。设计包含min函数的栈。

数据结构

为什么js拼接字符串StringBuilder效率那么高

闲谈StringBuilder
大家都知道StringBuilder在拼接大量字符串的时候相对String来说具有很高的效率,这是由于StringBuilder在内部处理上使用了字符串的链式存储表示法(串的块链存储法)。串的块链存储结构的C代码是这样的……由此,可以看到它同时具有线性表和链表的特性。

数据结构

常用于面试的链表操作算法

比较有趣的链表操作
链表操作在面试中会经常出现,下面列举的链表操作方法是比较典型的。问题1:输入一个单向链表,输出该链表中倒数第k个结点。一个单向链表无法像数组一样可以直接索引,那么要找到链表的倒数第K个节点该怎么操作呢,其实思路非常简单,我们只需要设置两个指针p1,p2,首先p1和p2都指向链表的头部head。

数据结构

程序员必须知悉的内存知识

对内存的理解
在C和C++语言开发中,指针、内存一直是学习的重点。因为C语言作为一种偏底层的中低级语言,提供了大量的内存直接操作的方法,这一方面使程序的灵活度最大化,同时也为bug埋下很多隐患。因此,无论如何,我们都要对内存有一个清晰的理解。
1 / 5 首页 < Prev 1 2 3 4 5 Next > 尾页 页码: