以图明志

计算机算法

[专题] 漫谈递归:循环与迭代是一回事吗?

理清递归、迭代、循环的概念
迭代算法是用计算机解决问题的一种基本方法。它利用计算机运算速度快、适合做重复性操作的特点,让计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值推出它的一个新值。个人认为迭代是循环的一种,循环体代码分为固定循环体,和变化的循环体。

计算机算法

[专题] 漫谈递归:递归与循环

大部分递归可以转化为循环
大家都知道递归的实现是通过调用函数本身,函数调用的时候,每次调用时要做地址保存,参数传递等,这是通过一个递归工作栈实现的。递归是利用系统的堆栈保存函数当中的局部变量来解决问题的。递归说白了就是在栈处理栈上一堆的指针指向内存中的对象,这些对象一直不被释放,直到递归执行到最后一次跳出条件的时候,才一个个出栈。所以开销很大。

数据结构

[专题] 循环队列与链队列的优劣势

循环队列、链队列分别什么时候用
从时间上,其实它们的基本操作都是常数时间,即都为0(1)的,不过循环队列是事先申请好空间,使用期间不释放,而对于链队列,每次申请和释放结点也会存在一些时间开销,如果入队出队频繁,则两者还是有细微差异。对于空间上来说,循环队列必须有一个固定的长度,所以就有了存储元素个数和空间浪费的问题。

数据结构

[专题] 关于循环队列的一些讲解

循环队列的长度与队满情况
前面讲到了队列的“假溢出”,解决假溢出的办法就是后面满了,就再从头开始,也就是头尾相接的循环。我们把队列的这种头尾相接的顺序存储结构称为循环队列。比如昨天的例子,rear可以改为指向下标为0的位置,这样就不会造成指针指向不明的问题了。

智力开发

开始做一件事前,兴趣真的那么重要吗?

做好了才有兴趣,有兴趣做得更好
说来说去,又是顺序出了问题——往往并不是有兴趣才能做好,而是做好了才有兴趣。人们总是搞错顺序,并对错误毫不知晓。尽管并不是绝对,但确实大多数事情都需要熟能生巧。做得多了,自然就擅长了;擅长了,就自然做得比别人好,兴趣就大起来了,然后就更喜欢做,更擅长,更.......良性循环。

数据结构

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

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

PHP服务器脚本

PHP foreach数组循环的一些问题

foreach 遍历数组
PHP foreach() 语法结构用于遍历操作或输出数组,foreach() 仅能用于遍历数组或对象,当试图将其用于其它数据类型或者一个未初始化的变量时会产生错误。每次循环将当前单元的值赋给 $value 并且数组内部的指针向前移一步。在第二种语法格式中还将当前单元的键名也会在每次循环中赋给变量 $key。

JavaScript

JavaScript如何跳出多重循环

break的一个用法
多重循环在编程中会经常遇到,那么在JavaScript中如何指定跳出那层的循环呢。其实这也是break的一个用法,下面是一个不错的例子,来自《JavaScript权威指南》,可以参考下。

JavaScript

[专题] JavaScript探秘:for-in循环(for-in Loops)

使用for-in进行循环也被称为“枚举”
for-in循环应该用在非数组对象的遍历上,使用for-in进行循环也被称为“枚举”。从技术上将,你可以使用for-in循环数组(因为JavaScript中数组也是对象),但这是不推荐的。因为如果数组对象已被自定义的功能增强,就可能发生逻辑错误。另外,在for-in中,属性列表的顺序(序列)是不能保证的。所以最好数组使用正常的for循环,对象使用for-in循环。

JavaScript

[专题] JavaScript探秘:for循环(for Loops)

不足在于每次循环的时候数组的长度都要去获取
在for循环中,你可以循环取得数组或是数组类似对象的值,譬如arguments和HTMLCollection对象。这种形式的循环的不足在于每次循环的时候数组的长度都要去获取下。这回降低你的代码,尤其当myarray不是数组,而是一个HTMLCollection对象的时候。

数据结构

[专题] 结构之美:双向循环链表的结构与定义

从图中直观认识双向链表
双(向)链表中有两条方向不同的链,即每个结点中除next域存放后继结点地址外,还增加一个指向其直接前趋的指针域prior。注意:链表由头指针head惟一确定的。带头结点的双链表的某些运算变得方便。将头结点和尾结点链接起来,为双(向)循环链表。

数据结构

[专题] 单循环链表的初始化、创建、删除、查找与遍历

单循环链表的基本操作
循环链表是一种链式存储结构,它的最后一个结点指向头结点,形成一个环。因此,从循环链表中的任何一个结点出发都能找到任何其他结点。循环链表的操作和单链表的操作基本一致,差别仅仅在于算法中的循环条件有所不同。链表、双链表、单循环链表、双循环链表 的实现代码都差不多,区别只是在对指针域的修改。下面,是对单循环链表的实现。

数据结构

循环链表与约瑟夫环问题

练习单循环链表这个数据结构
约瑟夫问题:编号为1~N的N个人按顺时针方向围坐一圈,每人持有一个密码(正整数),开始人选一个正整数作为报数上限值M,从第一个人按顺时针方向自1开始顺序报数,报道M时停止报数。报M的人出列,将他的密码作为新的M值,从他顺时针方向上的下一个人开始从1报数,如此下去,直至所有人全部出列为止。

数据结构

几种常见的循环链表介绍

与单链表相似但有区别
循环链表的运算与单链表的运算基本一致,不同的有以下几点:在建立一个循环链表时,必须使其最后一个节点的指针指向表头节点,而不是像单链表那样置为NULL。此种情况适用于在最后一个节点后插入一个新节点。判断是否到表尾采用判断该节点链域的值是否是表头节点的方法,当链域值等于表头指针时,说明已到表尾,而不是像单链表那样判断链域值是否为NULL。

数据结构

线性表的几个链式储存结构介绍

单链表,循环链表与双向链表
线性表的顺序存储结构要求逻辑关系上相邻的元素在物理位置上也相邻,这样方便了随机存取,但是在插入和删除元素时,需要移动大量元素,而线性表的链式存储则不要求逻辑上相邻的元素在物理位置上也相邻,因此它没有顺序存储结构的可随机存取的优点,不过在插入和删除元素时比较方便。
1 / 1 首页 < Prev 1 Next > 尾页 页码: