以图明志

数据结构

[专题] 获取单链表中的指定位置的元素

工作指针的概念
单链表作为一种数据结构,存取数据是其很基本的操作。今天我们来看一下,如何获取单链表指定位置的元素。在单链表中,由于第i个元素到底在哪是没办法一开始就知道,必须得从头开始找。我们可以先设计一下单链表实现获取第i个元素的数据的操作GetElem()函数。

数据结构

[专题] 查找某数在单链表中的位置

单链表的元素查找
这里也同样需要用到“工作指针”。首先声明一个工作指针,并让它指向链表的首元结点 LinkList p=L->next。参数 L 其实就是头指针,L->next 就是头结点。然后用工作指针遍历链表,当 p->data 与传入的查找数 e 相等,返回其位置即可。

数据结构

[专题] 用头插法实现单链表整表创建

头插法其实就是从表头开始的插入操作
不知道有没有注意到,前面我们在谈“单链表插入操作”的时候,其实我们是用插入操作来完成了单链表的整表创建的。那么创建单链表的过程就是一个动态生成链表的过程。即从“空表”的初始状态起,依次建立各元素结点,并逐个插入链表。其实就是将 p->next 指向结点 (*L)->next,然后再将 结点 (*L)的后继指向p,这个很好理解。

互联网时代

人月神话中一些经典的项目理论与观点

人月神话读书心得
从这本书的内容来看,对于一个项目经理来说肯定会有更大的收获,这本书主要是针对软件开发管理方面的内容,这主要原因可能是因为作者以前就是项目的管理者,他是站在管理者的角度写的。即便这样,对于一个从来没有参与过真实项目开发,更没有领导过团队的我还是有一定的吸引力。

数据结构

[专题] 用尾插法实现单链表整表创建

与头插法的区别
昨天我们谈到了头插法,可事实上,我们还是可以不这样干,为什么不把新结点都放到最后呢,这才是排队时的正常思维,所谓的先来后到。我们把每次新结点都插在终端结点的后面,这种算法称之为尾插法。与头插法区别下?*L 是头结点,r这里的角色是尾结点,一开始他们是重合的。

数据结构

[专题] 将单链表重置为空表

释放结点前需要处理后继关系
当我们不打算使用某个单链表时,就需要把它销毁,其实也就是在内存中将它释放掉,以便于留出空间给其他程序或软件使用。在循环体内直接写free (p); p=p->next; 这样真的没问题吗?要知道p是一个结点,它除了有数据域,还有指针域。在free (p); 时,其实是在对它整个结点进行删除和内存释放的工作。

数据结构

[专题] 单链表反转/逆序的两种方法

比较两种思路的差异
我先画一个单链表,这个单链表有4个元素。我的思路就是,每次把第二个元素提到最前面来。比如下面是第一次交换,我们先让头结点的next域指向结点a2,再让结点a1的next域指向结点a3,最后将结点a2的next域指向结点a1,就完成了第一次交换。

数据结构

[专题] 单链表反转/逆序的第三种方法

建立一个新表来拷贝每个元素
昨天介绍了单链表逆序的两种方法,后来我又想到了第三种。我们就是要深入地研究每个细节嘛。这个方法比较简单,这里就直接上函数了。重新建立一个单链表newList,每次将list中的第一个结点放到newList后面。注释比较详细,所以就不具体说了。

数据结构

[专题] 求单链表倒数第N个数

“距离-标尺”问题
不管是顺数n个还是倒数n个,其实都是距离-标尺问题。标尺是一段距离可以用线段的两个端点来衡量,我们能够判断倒数第一个节点,因为他的next==NULL。如果我们用两个指针,并保持他们的距离为n,那么当这个线段的右端指向末尾节点时,左端节点就指向倒数第n个节点。

数据结构

[专题] 用标尺法快速找到单链表的中间结点

工作指针与标尺
昨天我们了解到“距离-标尺”的典型问题,再之前也学习了“工作指针”的概念,现在可以来解决一个腾讯的面试题了:如何快速找到未知长度单链表的中间结点。能否再优化一下这个时间复杂度呢?有一个很巧妙的方法:设置两个工作指针*search、*mid都指向单链表的头节点。其中* search的移动速度是*mid的2倍。当*search指向末尾节点的时候,mid正好就在中间了。这也是标尺的思想。

数据结构

[专题] 如何判断链表是否有环的存在

“快慢指针”的使用
有环的定义是,链表的尾节点指向了链接中间的某个节点。比如下图,如果单链表有环,则在遍历时,在通过结点J之后,会重新回到结点D。如何判断一个单链表是否有环呢?这个可以用昨天提到的“快慢指针”来解决吧?设两个工作指针,一个快一个慢,如果有环的话,它们会必然在某点相遇。

数据结构

[专题] 单链表建环,无环链表变有环

设计一个链表建环函数
我们能否给一个无环链表建环呢?其实貌似也不很难,只要找到最后一个结点 tail,让它指向环的入口就行。所以问题分解为:找到环入口点 cur,把最后的指针 tail 指向 cur即可。首先找到环入口,也就是参数 num。定义工作指针 LinkList cur = *L; 让它遍历到 num 的位置。这个时候让第二个工作指针 tail 接替 cur 遍历到末尾。

IT人家

从创业失败的阵痛中得到的宝贵经验

风车网的创业失败教训总结
现在想想,一句话特到有感觉,那就是:选择大于努力。无论是大学生找工作、是各种原因的换工作、还是与朋友一块创业,谨慎的选择,选择靠谱的公司,选择靠谱的产品,选择靠谱的经理和伙伴,选择靠谱的老板,多花些时间接触和侧面了解,能够避免许多的弯路。我就是走上了这么一条弯路。

数据结构

[专题] 删除单链表中的重复元素

遍历与比较
刚我在网上看到一个面试题,如何删除单链表中重复的元素。今天我们试着解决这个问题吧。建立三个工作指针p,q,r,然后p遍历全表。p每到一个结点,q就从这个结点往后遍历,并与p的数值比较,相同的话就free掉那个结点。思路也蛮简单的。

搜索引擎优化

资讯类网站的运营思路

要清晰了解资讯类站的存活之道
资讯站,在指以文章为主的网站,这是互联网站的最基本组成形态之一,也是web1.0的基本表现形式。很多个人或公司建站,都是从资讯站开始的。中国互联网上最具代表的资讯站非新浪莫属。最早的新浪,只专注做一件事,就是把传统媒体的新闻搬到互联网上,从而成为中国最大的新闻门户。

IT人家

停下来,思考片刻

一些值得思考的话语
停下来,思考片刻。压力来自于自身能力的不足,而恐惧来自于未知。世界上最强大的力量是逻辑和理性。了解一个行业最好的方式之一是了解这个行业最牛的人及作品。要永远尊重别人,这是立身之本。不在那个环境中,或没有经历那一步,有些道理是很难领悟到的。
3 / 4 首页 < Prev 1 2 3 4 Next > 尾页 页码: