Files
stgsharp/源代码/.Net/StgSharp/Logic/LinkedList.cs
T

61 lines
1.2 KiB
C#

using System;
using System.Collections.Generic;
using System.Text;
namespace StgSharp
{
public class LinkedList<T> where T: INode
{
internal ContainerNode<T> _first;
internal ContainerNode<T> _tail;
private ContainerNode<T> _cache;
public T First
{
get { return _first._this; }
set { _first = new ContainerNode<T>(value); }
}
public T Tail
{
get { return _tail._this; }
set { _tail = new ContainerNode<T>(value); }
}
public void Add(T t)
{
if (_first != default(ContainerNode<T>))
{
First = t;
}
else
{
_cache = new ContainerNode<T>(t);
_tail._next = _cache;
_cache._previous = _tail;
_tail = _cache;
}
}
public void RemoveTail()
{
if (_tail==default(ContainerNode<T>))
{
}
else
{
_cache = _tail;
_tail = _cache._previous;
_cache._previous = default(ContainerNode<T>);
}
}
}
}