• 将链表逆序(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;
    }
    全部代码:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace _08ConsoleTest
    {
        
    class Program
        
    {
            
    static void Main(string[] args)
            
    {
                Test t 
    = new Test();
                t.T1();
            }



        }

        
    public class Test
        
    {
            
    public void T1()
            
    {
                
    // Create a Link 
                LL l = CreateLL("A");
                LL l2 
    = CreateLL("B");
                l.link 
    = l2;
                l2.link 
    = CreateLL("C");

                OutputLL(l);    
    // Output the original link: A B C
                LL revertLL = Revert(l);
                OutputLL(revertLL);  
    // Output the target link: C B A
                OutputLL(l);    // Output the original link: A B C (The original link will not change) 
            }

            
    private void OutputLL(LL l)
            
    {
                l.OutPut();
                Console.WriteLine(
    "---------------");
            }

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

            
    private LL CreateLL(string a)
            
    {
                LL l 
    = new LL();
                l.value 
    = a;
                
    return l;
            }

        }

        
    // 链表类
        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();
                }

            }

        }

    }
  • 相关阅读:
    nginx限制某个IP同一时间段的访问次数
    在64位机器上使用yum install特定指定安装32位的库
    pl sql developer连接oracle数据库提示:ORA12541: TNS: no listener
    [转]Eclipse中几种加入包方式的区别
    Oracle安装出现Can't connect to X11 window
    [转]ORACLE10GR2,dbca时ora27125错误解决方法
    [转]教你如何进入google国际版 不跳转g.cn 及 opendns
    安装oracle遇到的故障
    [转]宝文!Apple Push Notification Service (APNS)原理与实现方案
    [转]关于安卓与ios的推送系统,我说说自己的看法。
  • 原文地址:https://www.cnblogs.com/skywind/p/1004343.html
Copyright © 2020-2023  润新知