c#中简单链表的实现(非泛型)
2008-12-06 16:09
429 查看
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
namespace 泛型
{
//简单链表的实现,单向
class 泛型类
{
public static void Main()
{
LinkedList list = new LinkedList();
list.AddLast("500");
list.AddLast("400");
list.AddLast("300");
list.AddLast("200");
foreach (string i in list)
{
Console.WriteLine(i);
}
Console.ReadLine();
}
}
//结点类
class LinkedListNode
{
//项目值
private object value;
private LinkedListNode next;
private LinkedListNode prev;
public LinkedListNode( object value )
{
this.value = value;
}
public object Value
{
//只读属性
get
{
return this.value;
}
}
//下一个
public LinkedListNode Next
{
get { return next; }
set { next = value; }
}
//上一个
public LinkedListNode Prev
{
get { return prev; }
set { prev = value; }
}
}
class LinkedList : IEnumerable
{
//第一个
private LinkedListNode first;
internal LinkedListNode First
{
get { return first; }
set { first = value; }
}
//最后一个
private LinkedListNode last;
internal LinkedListNode Last
{
get { return last; }
set { last = value; }
}
//从后面插入
public LinkedListNode AddLast(object node)
{
LinkedListNode newNode = new LinkedListNode( node );
if (first == null)
{
//Last的引用一直要更新
first = newNode;
last = first;
}
else
{
//把当前最后一个节点的下一个节点的引用 指向新对象
last.Next = newNode;
//更新最后一个节点
last = newNode;
}
return newNode;
}
#region IEnumerable 成员
public IEnumerator GetEnumerator()
{
LinkedListNode current = first;
while (current != null)
{
yield return current.Value;
//新引用指向下一个节点的地址
current = current.Next;
}
}
#endregion
}
}
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
namespace 泛型
{
//简单链表的实现,单向
class 泛型类
{
public static void Main()
{
LinkedList list = new LinkedList();
list.AddLast("500");
list.AddLast("400");
list.AddLast("300");
list.AddLast("200");
foreach (string i in list)
{
Console.WriteLine(i);
}
Console.ReadLine();
}
}
//结点类
class LinkedListNode
{
//项目值
private object value;
private LinkedListNode next;
private LinkedListNode prev;
public LinkedListNode( object value )
{
this.value = value;
}
public object Value
{
//只读属性
get
{
return this.value;
}
}
//下一个
public LinkedListNode Next
{
get { return next; }
set { next = value; }
}
//上一个
public LinkedListNode Prev
{
get { return prev; }
set { prev = value; }
}
}
class LinkedList : IEnumerable
{
//第一个
private LinkedListNode first;
internal LinkedListNode First
{
get { return first; }
set { first = value; }
}
//最后一个
private LinkedListNode last;
internal LinkedListNode Last
{
get { return last; }
set { last = value; }
}
//从后面插入
public LinkedListNode AddLast(object node)
{
LinkedListNode newNode = new LinkedListNode( node );
if (first == null)
{
//Last的引用一直要更新
first = newNode;
last = first;
}
else
{
//把当前最后一个节点的下一个节点的引用 指向新对象
last.Next = newNode;
//更新最后一个节点
last = newNode;
}
return newNode;
}
#region IEnumerable 成员
public IEnumerator GetEnumerator()
{
LinkedListNode current = first;
while (current != null)
{
yield return current.Value;
//新引用指向下一个节点的地址
current = current.Next;
}
}
#endregion
}
}
相关文章推荐
- C#实现一个简单链表
- 使用C#链表简单实现的约瑟夫环
- C# 简单链表的实现上(object类型)
- C# 简单链表的实现下(使用泛型)
- 用链表实现一个简单的学生操作管理系统C语言版
- C# 网络编程之最简单浏览器实现
- 设计模式学习(四): 1.简单工厂 (附C#实现)
- C#中使用Socket实现简单Web服务器
- 浅谈:如何用C#实现简单的带有验证码及密码使用MD5加密的“登录”WinForm小程序
- Java实现简单的链表(钢铎的烽火)
- 实现一些简单的单链表
- C#实现简单过滤非法字符实例
- 用C#简单的实现双色球抽奖
- C#最简单的关闭子窗体更新父窗体的实现方法
- 根据权重随机选取指定条数记录的简单算法实现(C#)【含源代码】
- C#一颗简单多叉树的实现(原理、广度优先遍历、深度优先遍历)
- 利用模板实现简单的栈类(数组和单链表)
- C#实现一个最简单的HTTP服务器
- C#实现简单验证码
- 简单单向链表(C++模版技术实现)