展开全部
这个咋说呢?数据结构有无数种,任何人都可以根据自己的需求设计适合的数据结构,至于遍历,方法也要根据具体的结构进行设计啊,大体上常用的遍历有几种:顺序容器的遍历、树的遍历以及图(网络)的遍历。顺序的遍历很好想了,由首节点开始依序访问,直到最后结点为止,树的遍历和图的遍历基本上可以分为两种,一种是深度优先,一种是广度优先。深度优先的主要思想是对于当前节点,如果该节点存在未访问过的相邻节点,则选择其中进行访问,然后对该节点进行迭代访问,直到当前节点的所有相邻节点都被访问过,则返回它的上一个节点继续迭代执行,这个这么说不太好理解。举个例子吧,走一个迷宫,当你遇到一个路口(可以是二叉路口、十字路口、或更多个分支的路口)时,选择其中的一个一直走下去,直到遇到死路时,就返回向最后遇到过的路口走。广度优先的原则就是,对于当前节点,先按一定次序访问它的所有未访问过的相邻节点,再对这些节点依次进行迭代访问。比如说,你走迷宫,遇到一个路口,则对每一个分支路线派出一个分身继续走,直到遇到下一个路口,然后再对该路口同时进行分支访问,如果你不明白,建议你去看一下数据结构方面的书,我个人推荐最好的书是〈算法导论〉,程序员必读的书。里面有很好的讲解。
至于你说的C#中的数据结构遍历,我想你说的就是stl容器吧?其实基本上来说只有顺序容器才有遍历的接口,它是靠迭代器实现的,具体什么叫迭代器就不细说了,举一小段代码来说明吧
...........//code
List<int> list; //创建一个list容器
for(int i=0;i<10;i++)
{
list.Add(i); //插入十个元素,各元素的值为它的标号。
//这时list里有十个元素了
}
//////////下面是遍历
for(List<int>::iterator iter=list.begin();iter!=list.end();iter++)
{ //list.begin()是list中的首元素的位置。list.end()返回的是list末元素所以位置的下一位置
cout<<(*iter)<<endl;
}
不知道这么写行不,如果你想具体用哪个容器,去找找MSDN就行,上面写的很明白的
...........//code
至于你说的C#中的数据结构遍历,我想你说的就是stl容器吧?其实基本上来说只有顺序容器才有遍历的接口,它是靠迭代器实现的,具体什么叫迭代器就不细说了,举一小段代码来说明吧
...........//code
List<int> list; //创建一个list容器
for(int i=0;i<10;i++)
{
list.Add(i); //插入十个元素,各元素的值为它的标号。
//这时list里有十个元素了
}
//////////下面是遍历
for(List<int>::iterator iter=list.begin();iter!=list.end();iter++)
{ //list.begin()是list中的首元素的位置。list.end()返回的是list末元素所以位置的下一位置
cout<<(*iter)<<endl;
}
不知道这么写行不,如果你想具体用哪个容器,去找找MSDN就行,上面写的很明白的
...........//code
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询