题目

输入一个链表的头结点,从尾到头反过来打印出每个结点的值。

解题思路1

从头到尾遍历链表,使用一个栈结构来保存链表,然后取出栈数据进行输出

代码实现

var stack = new Stack<LinkNode>();
var head = linkNode;
do
{
    stack.Push(head);
    head = head.Next;
} while (head != null);

while (stack.Count > 0)
{
    var node = stack.Pop();
    Console.WriteLine(node?.Value);
}

解题思路2

使用递归延迟输出链表结果

代码实现

private static void PrintNode_Recursively(LinkNode linkNode)
{
    if (linkNode == null)
    {
        return;
    }
    PrintNode_Recursively(linkNode.Next);
    Console.WriteLine(linkNode.Value);
}