Reversing single linked list in C#

后端 未结 13 906
说谎
说谎 2020-12-07 17:02

I am trying to reverse a linked list. This is the code I have come up with:

 public static void Reverse(ref Node root)
 {
      Node tmp = root;
      Node n         


        
13条回答
  •  天涯浪人
    2020-12-07 17:31

    Here a sample code to reverse a linked list.

    using System;

    class Program
    {
        static void Main(string[] args)
        {
            LinkItem item = generateLinkList(5);
            printLinkList(item);
            Console.WriteLine("Reversing the list ...");
            LinkItem newItem = reverseLinkList(item);
            printLinkList(newItem);
            Console.ReadLine();
        }
    
        static public LinkItem generateLinkList(int total)
        {
            LinkItem item = new LinkItem();
            for (int number = total; number >=1; number--)
            {
                item = new LinkItem
                {
                    name = string.Format("I am the link item number {0}.", number),
                    next = (number == total) ? null : item
                };
            }
            return item;
        }
    
        static public void printLinkList(LinkItem item)
        {
            while (item != null)
            {
                Console.WriteLine(item.name);
                item = item.next;
            }
        }
    
        static public LinkItem reverseLinkList(LinkItem item)
        {
            LinkItem newItem = new LinkItem
            {
                name = item.name,
                next = null
            };
    
            while (item.next != null)
            {
                newItem = new LinkItem
                {
                    name = item.next.name,
                    next = newItem
                };
    
                item = item.next;
            }
    
            return newItem;
        }
    }
    
    class LinkItem
    {
        public string name;
        public LinkItem next;
    }
    

提交回复
热议问题