单链表-反转

本文介绍了一个简单的泛型链表实现,并提供了两种反转链表的方法:循环算法和递归算法。通过具体的代码实例展示了如何创建链表节点及链接这些节点形成完整的链表。

public class LinkNode<T> { T data; LinkNode<T> nextNode; public T Data { get { return data; } set { data = value; } } public LinkNode<T> NextNode { get { return nextNode; } set { nextNode = value; } } public LinkNode(T data) { this.data = data; } public LinkNode() { } public static LinkNode<string> Link() { LinkNode<string>[] link = new LinkNode<string>[8]; link[0] = new LinkNode<string>("A"); link[1] = new LinkNode<string>("B"); link[2] = new LinkNode<string>("C"); link[3] = new LinkNode<string>("D"); link[4] = new LinkNode<string>("E"); link[5] = new LinkNode<string>("F"); link[6] = new LinkNode<string>("G"); link[7] = new LinkNode<string>("H"); link[0].NextNode = link[1]; link[1].NextNode = link[2]; link[2].NextNode = link[3]; link[3].NextNode = link[4]; link[4].NextNode = link[5]; link[5].NextNode = link[6]; link[6].NextNode = link[7]; link[7].nextNode = null; return link[0]; } // 反转一个链表,循环算法。 public static LinkNode<T> ReverseLink(LinkNode<T> fNode) { if (fNode.nextNode == null) return fNode; LinkNode<T> preNode = fNode; LinkNode<T> curNode = fNode.nextNode; LinkNode<T> temp = null; preNode.nextNode = null; while (curNode != null) { temp = curNode; curNode = curNode.nextNode; temp.nextNode = preNode; temp = preNode; } return temp; } // 反转一个链表,递归算法。 public static LinkNode<T> recursionReverseLink(LinkNode<T> fNode) { Console.WriteLine("第一次递归的数据:{0}", fNode.Data); if (fNode == null || fNode.nextNode == null) return fNode; else { LinkNode<T> n = recursionReverseLink(fNode.nextNode); Console.WriteLine("第二次回归的数据:{0}", fNode.Data); fNode.nextNode.nextNode = fNode; fNode.nextNode = null; return n; } } }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值