逆转单链表c#模拟实现
来源:互联网 发布:论李维 知乎 编辑:程序博客网 时间:2024/05/17 22:52
/// <summary>
/// 模拟单链表
/// </summary>
class LinkNode
{
public object data;
public LinkNode next;
public LinkNode(object adata)
{
this.data = adata;
}
}
class LinkUtil
{
/// <summary>
/// 反转单链表,用两个辅助节点
/// </summary>
/// <param name="node"></param>
/// <returns></returns>
public static LinkNode Inverse(LinkNode node)
{
// r,q,p 一步一步,像走路一样
// p总是指向下一个节点
//q 用来跟上p
//r 用来存储断开的节点
LinkNode r = null;
LinkNode q = null;
LinkNode p = node;
while (p != null)
{
r = q;
q = p;
p = p.next;
q.next = r;
}
return q;
}
/// <summary>
/// 打印单链表
/// </summary>
/// <param name="list"></param>
public static void PrintList(LinkNode list)
{
LinkNode p=list;
while (p != null)
{
Console.WriteLine(p.data);
p = p.next;
}
}
/// <summary>
/// 测试
/// </summary>
/// <param name="args"></param>
static void Main(string[] args)
{
LinkNode n1 = new LinkNode("1");
LinkNode n2 = new LinkNode("2");
LinkNode n3 = new LinkNode("3");
LinkNode n4 = new LinkNode("4");
n1.next = n2;
n2.next = n3;
n3.next = n4;
Console.WriteLine("before reverse:");
PrintList(n1);
Console.WriteLine("after reverse:");
LinkNode head= Inverse(n1);
PrintList(head);
Console.Read();
}
}
- 逆转单链表c#模拟实现
- 单链表,实现逆转
- 单链表的逆转实现
- 单链表实现就地逆转
- java实现单链表逆转
- C++实现单链表的逆转
- 【算法设计-单链表的逆转】单链表逆转实现
- 用栈实现单链表的逆转
- 单链表逆转
- 逆转单链表
- 单链表逆转
- 逆转单链表
- 单链表逆转
- 单链表逆转
- 单链表逆转
- 单链表逆转
- 单链表逆转
- 单链表逆转
- X86_64中Firefox Flashplayer插件安装方法
- Ajax开发者不得不用的Ajax框架
- CodeFile、Src、Codebehind三者的差别在哪?
- 布什收到拉登寄来的一份信件
- 动画效果css导航栏
- 逆转单链表c#模拟实现
- 口袋中的Linux
- Servlet 遇到麻烦了,哪位大虾帮帮忙!
- SQLHelper 简介
- 看到一片广阔!
- 网站商务通的刚开始的构想.Net
- APACHE优化之apache的内存使用
- DELPHI中回调函数的使用
- 古龙笔下一百单八将总表