如何遍历C#链表以相反的顺序 [英] How to traverse C# LinkedList in reverse order

查看:165
本文介绍了如何遍历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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆