鏈表反轉(zhuǎn)的思路:
1.利用棧后進(jìn)先出的特性彤委,將鏈表的每個節(jié)點都Push進(jìn)棧,然后再Pop出棧或衡,保存進(jìn)鏈表焦影,實現(xiàn)反轉(zhuǎn)。
2利用遞歸封断,調(diào)用到尾端的節(jié)點斯辰,回溯保存進(jìn)鏈表,實現(xiàn)反轉(zhuǎn)坡疼。
public class ListNode
{
public int val;
public ListNode next;
public ListNode(int x)
{
val = x;
}
}
public List<int> printListFromTailToHead(ListNode listNode)
{
// 利用棧版本
Stack<int> _stack = new Stack<int>();
while (listNode != null)
{
_stack.Push(listNode.val);
listNode = listNode.next;
}
List<int> newList = new List<int>();
while (_stack.Count != 0)
{
newList.Add(_stack.Pop());
}
return newList;
//-------------------------------------------------------------------------------
//遞歸版本
if (listNode!=null)
{
if (listNode.next!=null)
{
printListFromTailToHead(listNode.next);
}
newList.Add(listNode.val);
}
return newList;
}