给定一个链表,需要将链表中存的元素从尾到头打印出来,由链表的特性可以知道,元素都是从前向后链接的,因此需要通过另外手段实现从尾到头遍历,此时使用一个栈来完成这样一个操作,栈的特点是先进后出,这样往栈中存的元素出栈时就是从尾到头打印的了。
public class ListNode
{
public int val;
public ListNode next;
public ListNode(int val)
{
this.val = val;
}
}
public static ArrayList PrintListFromTailToHead(ListNode listnode)
{
Stack<ListNode> stack = new Stack<ListNode>();
while(listnode != null)
{
stack.Push(listnode);
listnode = listnode.next;
}
ArrayList result = new ArrayList();
while (stack.Count != 0)
{
result.Add(stack.Pop().val);
}
return result;
}
//测试用例
ListNode node1 = new ListNode(2);
ListNode node2 = new ListNode(3);
ListNode node3 = new ListNode(4);
node1.next = node2;
node2.next = node3;
ArrayList s = PrintListFromTailToHead(node1);
for(int i = 0; i < s.Count; i++)
{
Console.WriteLine(s[i].ToString());
}