using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SingleList
{
class Node
{
public object Element;
public Node Link;
/// <summary>
/// 空表
/// </summary>
public Node()
{
Element = null;
Link = null;
}
/// <summary>
/// 数据表
/// </summary>
/// <param name="theElement"></param>
public Node(object theElement)
{
Element = theElement;
Link = null;
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SingleList
{
class LinkedList
{
protected Node header;
/// <summary>
/// 头引用
/// </summary>
public LinkedList()
{
header = new Node("header");
}
/// <summary>
/// 找到某个数据在链表中的节点位置
/// </summary>
/// <param name="item"></param>
/// <returns></returns>
private Node Find(Object item)
{
Node current = new Node();
current = header;
while (current.Element != item)
{
current = current.Link;
}
return current;
}
/// <summary>
/// 链表插入
/// </summary>
/// <param name="newItem"></param>
/// <param name="after"></param>
public void Insert(Object newItem, Object after)
{
Node current = new Node();
Node newNode = new Node(newItem);
current = Find(after);
newNode.Link = current.Link;
current.Link = newNode;
}
/// <summary>
/// 找到数据n前面的链表节点
/// </summary>
/// <param name="n"></param>
/// <returns></returns>
private Node FindPrevious(Object n)
{
Node current = header;
while (!(current.Link == null) && (current.Link.Element != n))
{
current = current.Link;
}
return current;
}
/// <summary>
/// 删除某个节点
/// </summary>
/// <param name="n"></param>
public void Remove(Object n)
{
Node p = FindPrevious(n);
if (!(p.Link == null))
{
p.Link = p.Link.Link;
}
}
/// <summary>
/// 打印节点数据
/// </summary>
public void PrintList()
{
Node current = new Node();
current = header;
while (!(current.Link == null))
{
Console.WriteLine(current.Link.Element);
current = current.Link;
}
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SingleList
{
class Program
{
static void Main(string[] args)
{
LinkedList Ld = new LinkedList();
Ld.Insert("Zou", "header");
Ld.Insert("Yong", "Zou");
Ld.Insert("Love", "Yong");
Ld.PrintList();
Ld.Remove("Love");
Ld.PrintList();
Console.ReadKey();
}
}
}