• 将链表逆序(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();
                }

            }

        }

    }
  • 相关阅读:
    MySQL的删除语句
    机器学习-K-means聚类及算法实现(基于R语言)
    机器学习-线性回归补充-实践
    什么是JWT
    Java的NIO
    音乐播放器歌词同步显示
    Linux和Mac下安装RocketMQ过程
    支付宝沙箱应用
    HTML5 调用手机摄像头拍照
    JavaWeb图片上传的几种方式
  • 原文地址:https://www.cnblogs.com/skywind/p/1004343.html
Copyright © 2020-2023  润新知