以下代码是我从“http://blog.csdn.net/netfuns/archive/2008/04/09/2267435.aspx”copy过来的,先感谢原作者,省了写代码的时间。
记得老早以前我一直很模糊这个算法,尤其是我标黑的两行代码,最近在重新学习数据结构和算法方面的东西,就想起来了这段程序了,写出来做个自我批评吧,我之前总是以为 q = p;p = p.next;之后q也指向了p.next。因为我之前觉得对象引用一变就都变了,这就是我始终觉得这段代码不对的原因,其实呢 q = p;语句传递的是指向对象存储的指针,呵呵....希望现在不会有像我之前一样迷糊的人了....
/// <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#做的单链表,单链表,有一些东西不是特别好,看看吧
用c#技术实现单链表节点的创建,添加,删除和查找
本程序由C#实现,如何定义单链表以及查找、插入、求长度基本操作。
用C#实现单链表,使用图形界面,功能有增(头插,尾插),删, 改, 能自定义节点个数,还有倒置等功能,是学习链式存储是的练习程序,多多指教,jiehanwang@126.com
有图形界面 对单链表生成 增删改 倒置 清空 一目了然 附 课程设计文档
本文实例讲述了C#实现单链表(线性表)的方法。分享给大家供大家参考,具体如下: 顺序表由连续内存构成,链表则不同。顺序表的优势在于查找,链表的优势在于插入元素等操作。顺序表的例子://...
链表的基本算法 实现了合并与去重 最最基础的算法 大佬就别下载了 没必要的 刚刚学习算法 有兴趣的一起探索
单链表的基本操作,包含单链表的插入,删除,建立,查找..
C#控制台程序,单链表的实现,适合初学者,调试程序就可以运行了
单链表的算法及调。单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素...
C#编程思想C#编程思想C#编程思想C#编程思想C#编程思想
大二实验作业 顺序表,单链表,顺序表应用,冒泡排序,折半查找 写在一个form窗口
C#编程思想 精典C#学习资料 适合各类C#开发人员学习;
c#常见错误处理,列出了常见的c#错误。
用C#实现数据结构与算法中单链表的结构,先是定义一个通信记录的数据类,后定义结点类,最后规划出以结点类为内部类的单链表类。
这是一本非常好的C#编程方面的书(用superstar打开),无论你是门外汉,还是有一定C#编程经验的coding,你都会发现,她对你真的很有帮助!(password: xiaxia)
C#winform 全局错误捕捉 可以让错误跳过去继续执行住程序
C#编程思想 C#编程思想 C#编程思想 C#编程思想 C#编程思想