1.js的foreach遍历怎么用
var data=[1,2,3,4,5,6];
var sum=0;
data.forEach(function(v){//其中的v就是数组的值 123456
sum+=v;})
document.write(sum+"
");//打印出来是21
data.forEach(function(o,p,q){//分别对应:数组元素,元素的索引,数组本身
q[p]=o+1;
})
document.write(data);
2.C语言,怎么用遍历求最大最小
遍历法好像跟数据库有关吧 还没学 好像有二叉树什么的
不过 我了解的求最大最小的方法大同小异
就是开始时假设一个最大最小值 然后把要判断的数值与假设的值进行比较 判断大小关系后 做选择
{int i,n;
float a,max,min;
scanf("%f",a);
max=min=a; /*假设第一个值即为最大最小*/
for(i=0;i<n;i++)
{scanf("%f",a);
if(max<a) {max=a;continue;/*输入一个值后与当前最大值比较 取二者中的最大 continue 节省了判断次数 */
if(min>a) min=a;
}
}
楼上的也是这个思路
答非所问 莫介意。
3.遍历是什么意思
你那个答案是联系到数据结构了。也就是说用数据结构进行举例,说明什么叫遍历。
按照我的理解,遍历就像是皇帝下江南。
下江南是皇帝把江南所有的好风光看了一遍。遍历就是你把某个集合中的数据全部访问了一遍。
有几点点要注意的是:1、一定是全部数据都访问了,才叫遍历,只访问一半那不叫遍历;2、遍历仅仅局限于访问数据,如果在访问的过程中,涉及到修改,那么我认为就不叫遍历了,或者说不是一个纯遍历了。
至于循环,它是达成遍历的一种手段。
4.怎样用递归的方法遍历栈
如何用栈实现递归与非递归的转换 分类: C/C++2010-07-12 14:4012人阅读评论(0)收藏举报 如何用栈实现递归与非递归的转换一.为什么要学习递归与非递归的转换的实现方法? 1)并不是每一门语言都支持递归的. 2)有助于理解递归的本质. 3)有助于理解栈,树等数据结构.二.递归与非递归转换的原理. 递归与非递归的转换基于以下的原理:所有的递归程序都可以用树结构表示出来.需要说明的是,这个"原理"并没有经过严格的数学证明,只是我的一个猜想,不过在至少在我遇到的例子中是适用的. 学习过树结构的人都知道,有三种方法可以遍历树:前序,中序,后序.理解这三种遍历方式的递归和非递归的表达方式是能够正确实现转换的关键之处,所以我们先来谈谈这个.需要说明的是,这里以特殊的二叉树来说明,不过大多数情况下二叉树已经够用,而且理解了二叉树的遍历,其它的树遍历方式就不难了. 1)前序遍历 a)递归方式: void preorder_recursive(Bitree T) /* 先序遍历二叉树的递归算法 */ { if (T) { visit(T); /* 访问当前结点 */ preorder_recursive(T->;lchild); /* 访问左子树 */ preorder_recursive(T->;rchild); /* 访问右子树 */ } } 复制代码 b)非递归方式 void preorder_nonrecursive(Bitree T) /* 先序遍历二叉树的非递归算法 */ { initstack(S); push(S,T); /* 根指针进栈 */ while(!stackempty(S)) { while(gettop(S,p)&&p) { /* 向左走到尽头 */ visit(p); /* 每向前走一步都访问当前结点 */ push(S,p->;lchild); } pop(S,p); if(!stackempty(S)) { /* 向右走一步 */ pop(S,p); push(S,p->;rchild); } } } 复制代码 2)中序遍历 a)递归方式 void inorder_recursive(Bitree T) /* 中序遍历二叉树的递归算法 */ { if (T) { inorder_recursive(T->;lchild); /* 访问左子树 */ visit(T); /* 访问当前结点 */ inorder_recursive(T->;rchild); /* 访问右子树 */ } } 复制代码 b)非递归方式 void inorder_nonrecursive(Bitree T) { initstack(S); /* 初始化栈 */ push(S, T); /* 根指针入栈 */ while (!stackempty(S)) { while (gettop(S, p) && p) /* 向左走到尽头 */ push(S, p->;lchild); pop(S, p); /* 空指针退栈 */ if (!stackempty(S)) { pop(S, p); visit(p); /* 访问当前结点 */ push(S, p->;rchild); /* 向右走一步 */ } } } 复制代码 3)后序遍历 a)递归方式 void postorder_recursive(Bitree T) /* 中序遍历二叉树的递归算法 */ { if (T) { postorder_recursive(T->;lchild); /* 访问左子树 */ postorder_recursive(T->;rchild); /* 访问右子树 */ visit(T); /* 访问当前结点 */ } } 复制代码 b)非递归方式 typedef struct { BTNode* ptr; enum {0,1,2} mark; } PMType; /* 有mark域的结点指针类型 */ void postorder_nonrecursive(BiTree T) /* 后续遍历二叉树的非递归算法 */ { PMType a; initstack(S); /* S的元素为PMType类型 */ push (S,{T,0}); /* 根结点入栈 */ while(!stackempty(S)) { pop(S,a); switch(a.mark) { case 0: push(S,{a.ptr,1}); /* 修改mark域 */ if(a.ptr->;lchild) push(S,{a.ptr->;lchild,0}); /* 访问左子树 */ break; case 1: push(S,{a.ptr,2}); /* 修改mark域 */ if(a.ptr->;rchild) push(S,{a.ptr->;rchild,0}); /* 访问右子树 */ break; case 2: visit(a.ptr); /* 访问结点 */ } } } 复制代码 4)如何实现递归与非递归的转换 通常,一个函数在调用另一个函数之前,要作如下的事情:a)将实在参数,返回地址等信息传递 给被调用函数保存; b)为被调用函数的局部变量分配存储区;c)将控制转移到被调函数的入口. 从被调用函数返回调用函数之前,也要做三件事情:a)保存被调函数的计算结果;b)释放被调 函数的数据区;c)依照被调函数保存的返回地址将控制转移到调用函数. 所有的这些,不论是变量还是地址,本质上来说都是"数据",都是保存在系统所分配的栈中的. ok,到这里已经解决了第一个问题:递归调用时数据都是保存在栈中的,有多少个数据需要保存 就要设置多少个栈,而且最重要的一点是:控制所有这些栈的栈顶指针都是相同的,否则无法实现 同步. 下面来解决第二个问题:在非递归中,程序如何知道到底要转移到哪个部分继续执行?回到上 面说的树的三种遍历方式,抽象出来只有三种操作:访问当前结点,访问左子树,访问右子树.这三 种操作的顺序不同,遍历方式也不同.如果我们再抽象一点,对这三种操作再进行一个概括,可以 得到:a)访问当前结点:对目前的数据进行一些处理;b)访问左子树:变换当前的数据以进行下一次 处理;c)访问右子树:再次变换当前的数据以进行下一次处理(与访问左子树所不同的方式). 下面以先序遍历来说明: void preorder_recursive(Bitree T) /* 先序遍历二叉树的递归算法 */ { if (T) { visit(T); /* 访问当前结点 */ preorder_recursive(T->;lchild); /* 访问左子树 */ preorder_recursive(T->;rchild); /* 访问右子树 */ } } 复制代码 visit(T)这个操作就是对当前数据进行的处理, preorder_recursive(T->;lchild)就是把当前 数据变换为它的左子树,访问右子树的操作可以同样理解了. 现在回到我们提出的第二个问题:如何确定转移到哪里继续执行?关键在于一下三个地方:a) 确定对当前数据的访问顺序,简单一点说就是确定这个递归程序可以转换为哪种方式遍历的。
5.如何用二叉树遍历所有可能
关于如何使用二叉树遍历所有可能(即:所有数据节点)的话,那么非常简单:就是在编写程序的时候设计一个数据结构正确的递归子函数,然后使用二叉树算法遍历所有数据节点。
但是这里要注意的就是:如果想今后使用二叉树(或者是遍历别的数据结构,例如:单链表、双链表、或者是多叉树等),那么在对数据进行存储时,就必须要把将来需要访问遍历的数据保存成相应的数据格式(例如:单链表、双链表、或者是多叉树等)。否则的话,如果数据格式不匹配的话,那是无法使用相对应的遍历算法进行遍历的。
关于树的各种遍历问题,以根节点位置为标准,包括:前序(根左右)、中序(左根右)、后序(左右根),这个是数据结构上的问题。只要你的数据格式保存正确得当,至于说使用哪一种具体的遍历方式,那么肯定都是可以正确访问的。
6.怎么用js遍历select
参考:
for(var i=0;i<document.getElementById(id).options.length;i++)
{
if(document.getElementById(id).options[i].value == val)
{
document.getElementById(id).options[i].selected=true;
break;
}
}