链表逆序,是面试常见的考题。今天我的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;
}
全部代码:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLl52bO9CXzJ3b0F2YpRmbJdmbp5WasRXdP9CXzV2Zh1WSvwVbvNmLzd2bsJmbj5yd3d3Lc9CX6MHc0RHaiojIsJye.gif)
using System;
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLl52bO9CXzJ3b0F2YpRmbJdmbp5WasRXdP9CXzV2Zh1WSvwVbvNmLzd2bsJmbj5yd3d3Lc9CX6MHc0RHaiojIsJye.gif)
using System.Collections.Generic;
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLl52bO9CXzJ3b0F2YpRmbJdmbp5WasRXdP9CXzV2Zh1WSvwVbvNmLzd2bsJmbj5yd3d3Lc9CX6MHc0RHaiojIsJye.gif)
using System.Linq;
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLl52bO9CXzJ3b0F2YpRmbJdmbp5WasRXdP9CXzV2Zh1WSvwVbvNmLzd2bsJmbj5yd3d3Lc9CX6MHc0RHaiojIsJye.gif)
using System.Text;
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLl52bO9CXzJ3b0F2YpRmbJdmbp5WasRXdP9CXzV2Zh1WSvwVbvNmLzd2bsJmbj5yd3d3Lc9CX6MHc0RHaiojIsJye.gif)
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLl52bO9CXzJ3b0F2YpRmbJdmbp5WasRXdP9CXzV2Zh1WSvwVbvNmLzd2bsJmbj5yd3d3Lc9CX6MHc0RHaiojIsJye.gif)
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();
本文转自Jack Niu博客园博客,原文链接:http://www.cnblogs.com/skywind/archive/2007/12/18/1004343.html,如需转载请自行联系原作者