給定一個鏈表,需要將鏈表中存的元素從尾到頭打印出來,由鏈表的特性可以知道,元素都是從前向後鏈接的,因此需要通過另外手段實現從尾到頭遍歷,此時使用一個棧來完成這樣一個操作,棧的特點是先進後出,這樣往棧中存的元素出棧時就是從尾到頭打印的了。
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());
}