如何遍历C#链表以相反的顺序 [英] How to traverse C# LinkedList in reverse order
本文介绍了如何遍历C#链表以相反的顺序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我如何能做到下面的C使用C#++片断相当于的LinkedList
?
的std ::列表< MyClass的*> :: reverse_iterator的ITR(它);
为(;!ITR = MyList.rend(); ++ ITR)
解决方案
作为1客,是这样的:
VAR EL = list.Last;
,而发光(EL!= NULL){
//使用el.Value
EL = el.Previous;
}
如果你经常这样做,也许类似的迭代器块产生的所有值:
公共静态的IEnumerable< T>反向< T>(此LinkedList的< T>名单){
VAR EL = list.Last;
,而发光(EL!= NULL){
收益率的回报el.Value;
EL = el.Previous;
}
}
然后:
{
//使用VAL
}
How can I do the equivalent of the following C++ snippet using C# LinkedList
?
std::list<MyClass*>::reverse_iterator itr(it);
for(; itr != MyList.rend(); ++itr)
解决方案
As a 1-off, something like:
var el = list.Last;
while (el != null) {
// use el.Value
el = el.Previous;
}
If you are doing it regularly, maybe a similar iterator block to yield all the values:
public static IEnumerable<T> Reverse<T>(this LinkedList<T> list) {
var el = list.Last;
while (el != null) {
yield return el.Value;
el = el.Previous;
}
}
then:
foreach(var val in list.Reverse()) {
// use val
}
这篇关于如何遍历C#链表以相反的顺序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文