美文网首页
链表反转

链表反转

作者: 李泽兴 | 来源:发表于2017-09-08 10:57 被阅读0次

    链表反转的思路:
    1.利用栈后进先出的特性,将链表的每个节点都Push进栈,然后再Pop出栈,保存进链表,实现反转。

    2利用递归,调用到尾端的节点,回溯保存进链表,实现反转。

    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;
    }

    相关文章

      网友评论

          本文标题:链表反转

          本文链接:https://www.haomeiwen.com/subject/iqjgjxtx.html