首页 > Windows开发 > 详细

C# 双向链表 反转

时间:2019-05-23 14:12:59      阅读:139      评论:0      收藏:0      [点我收藏+]

两个方式:一种是对折 互换值,一种是一个一个取出来给新的链表赋值,再引用切换

        public void ReverseLinkedList1<T>(LinkedList<T> linkedList)
        {
            LinkedListNode<T> firstNode;
            LinkedListNode<T> secondNode; 
            int numberOfRun;

            LinkedListNode<T> tail = linkedList.First;

            while (tail.Next != null)
                tail = tail.Next;

            firstNode = linkedList.First;
            secondNode = tail;
            numberOfRun = linkedList.Count / 2;

            T tempObject; 
            for (int i = 0; i < numberOfRun; i++)
            {
                tempObject = firstNode.Value;
                firstNode.Value = secondNode.Value;
                secondNode.Value = tempObject;
                firstNode = firstNode.Next;
                secondNode = secondNode.Previous;
            }
        }

        public void ReverseLinkedList2<T>(LinkedList<T> linkedList)
        {
            LinkedList<T> copyList = new LinkedList<T>();
            LinkedListNode<T> start = linkedList.First;
            while (start != null)
            {
                copyList.AddFirst(start.Value);
                start = start.Next;
            }

            linkedList = copyList;
        }

 

C# 双向链表 反转

原文:https://www.cnblogs.com/TeemoHQ/p/10911368.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!