天天看点

将链表逆序(Revert)的C#实现

链表逆序,是面试常见的考题。今天我的Manager居然给我出了这道题(说是再招聘其他人以我的水平做参照!),我做的可是漏洞百出啊,闲来整理了一下代码用C#的实现,以备今后面试之用。

// 链表类

class LL

{

    public string value;

    public LL link;

    // used for outputing the link data

    public void OutPut()

    {

        Console.Write(value);

        if (link != null)

        {

            Console.Write(",");

            link.OutPut();

        }

    }

}

逆序:

private LL Revert(LL t)

    LL newList = null;

    while (t != null)

        LL mid = new LL();

        mid.value = t.value;

        mid.link = newList;

        newList = mid;

        t = t.link;

    return newList;

全部代码:

将链表逆序(Revert)的C#实现

using System;

将链表逆序(Revert)的C#实现

using System.Collections.Generic;

将链表逆序(Revert)的C#实现

using System.Linq;

将链表逆序(Revert)的C#实现

using System.Text;

将链表逆序(Revert)的C#实现
将链表逆序(Revert)的C#实现

namespace _08ConsoleTest

将链表逆序(Revert)的C#实现
将链表逆序(Revert)的C#实现

    class Program

将链表逆序(Revert)的C#实现

    {

将链表逆序(Revert)的C#实现

        static void Main(string[] args)

将链表逆序(Revert)的C#实现

        {

将链表逆序(Revert)的C#实现

            Test t = new Test();

将链表逆序(Revert)的C#实现

            t.T1();

将链表逆序(Revert)的C#实现

        }

将链表逆序(Revert)的C#实现
将链表逆序(Revert)的C#实现
将链表逆序(Revert)的C#实现

    }

将链表逆序(Revert)的C#实现

    public class Test

将链表逆序(Revert)的C#实现
将链表逆序(Revert)的C#实现

        public void T1()

将链表逆序(Revert)的C#实现
将链表逆序(Revert)的C#实现

            // Create a Link 

将链表逆序(Revert)的C#实现

            LL l = CreateLL("A");

将链表逆序(Revert)的C#实现

            LL l2 = CreateLL("B");

将链表逆序(Revert)的C#实现

            l.link = l2;

将链表逆序(Revert)的C#实现

            l2.link = CreateLL("C");

将链表逆序(Revert)的C#实现
将链表逆序(Revert)的C#实现

            OutputLL(l);    // Output the original link: A B C

将链表逆序(Revert)的C#实现

            LL revertLL = Revert(l);

将链表逆序(Revert)的C#实现

            OutputLL(revertLL);  // Output the target link: C B A

将链表逆序(Revert)的C#实现

            OutputLL(l);    // Output the original link: A B C (The original link will not change) 

将链表逆序(Revert)的C#实现
将链表逆序(Revert)的C#实现

        private void OutputLL(LL l)

将链表逆序(Revert)的C#实现
将链表逆序(Revert)的C#实现

            l.OutPut();

将链表逆序(Revert)的C#实现

            Console.WriteLine("---------------");

将链表逆序(Revert)的C#实现
将链表逆序(Revert)的C#实现

        private LL Revert(LL t)

将链表逆序(Revert)的C#实现
将链表逆序(Revert)的C#实现

            LL newList = null;

将链表逆序(Revert)的C#实现

            while (t != null)

将链表逆序(Revert)的C#实现

            {

将链表逆序(Revert)的C#实现

                LL mid = new LL();

将链表逆序(Revert)的C#实现

                mid.value = t.value;

将链表逆序(Revert)的C#实现

                mid.link = newList;

将链表逆序(Revert)的C#实现
将链表逆序(Revert)的C#实现

                newList = mid;

将链表逆序(Revert)的C#实现

                t = t.link;

将链表逆序(Revert)的C#实现

            }

将链表逆序(Revert)的C#实现

            return newList;

将链表逆序(Revert)的C#实现
将链表逆序(Revert)的C#实现

        private LL CreateLL(string a)

将链表逆序(Revert)的C#实现
将链表逆序(Revert)的C#实现

            LL l = new LL();

将链表逆序(Revert)的C#实现

            l.value = a;

将链表逆序(Revert)的C#实现

            return l;

将链表逆序(Revert)的C#实现
将链表逆序(Revert)的C#实现
将链表逆序(Revert)的C#实现

    // 链表类

将链表逆序(Revert)的C#实现

    class LL

将链表逆序(Revert)的C#实现
将链表逆序(Revert)的C#实现

        public string value;

将链表逆序(Revert)的C#实现

        public LL link;

将链表逆序(Revert)的C#实现

        // used for outputing the link data

将链表逆序(Revert)的C#实现

        public void OutPut()

将链表逆序(Revert)的C#实现
将链表逆序(Revert)的C#实现

            Console.Write(value);

将链表逆序(Revert)的C#实现

            if (link != null)

将链表逆序(Revert)的C#实现
将链表逆序(Revert)的C#实现

                Console.Write(",");

将链表逆序(Revert)的C#实现

                link.OutPut();

将链表逆序(Revert)的C#实现
将链表逆序(Revert)的C#实现
将链表逆序(Revert)的C#实现
将链表逆序(Revert)的C#实现

本文转自Jack Niu博客园博客,原文链接:http://www.cnblogs.com/skywind/archive/2007/12/18/1004343.html,如需转载请自行联系原作者