public TLinkedListT()
{
Head = new LinkedNode();
Tail = new STail();
Tail.tail = new LinkedNode();
Tail.tail.Link = Head;
Tail.length = 0;
}
private LinkedNode Head;
private STail Tail;
//特殊尾结点
public struct STail
{
public LinkedNode tail;
public int length;
}
public STail GetSTail
{
get { return Tail; }
set { Tail = value; }
}
//增加结点,注意要更改尾部指针
public void Add(LinkedNode node)
{
LinkedNode temp =Tail.tail.Link;//找到最后一个
temp.Link = node;
//更改尾结点指针
Tail.tail.Link = temp.Link;
Tail.length = Tail.length + 1;
}
//在第i个结点前插入元素node,head是第0个元素
public void Insert(LinkedNode node, int i)
{
//保证0<i<count
LinkedNode temp = Head;
int j = 0;
//找到第i-1个元素
while (temp.Link != null)
{
if (j == i - 1)
{
node.Link = temp.Link;
temp.Link = node;
Tail.length = Tail.length + 1;
break;
}
temp = temp.Link;
j++;
}
}
//删除第i个结点
public void Delete(int i)
{
LinkedNode temp = this.Head;
int j = 0;
//还是要找到i-1
while (temp.Link != null)
{
if (j == i - 1)
{
temp.Link = temp.Link.Link;
//判断是否删除最后一个结点
if (temp.Link == null)
{
Tail.tail.Link = temp;
}
Tail.length = Tail.length - 1;
break;
}
temp = temp.Link;
j++;
}
}
//获取元素个数,不包含头结点,尾结点
public int GetLength()
{
return Tail.length;
}
//清空链表
public void Clear()
{
while (Head.Link != null)
{
LinkedNode temp = Head;
Head = Head.Link;
temp = null;
}
Tail.length = 0;
Head = null;
}
{
Head = new LinkedNode();
Tail = new STail();
Tail.tail = new LinkedNode();
Tail.tail.Link = Head;
Tail.length = 0;
}
private LinkedNode Head;
private STail Tail;
//特殊尾结点
public struct STail
{
public LinkedNode tail;
public int length;
}
public STail GetSTail
{
get { return Tail; }
set { Tail = value; }
}
//增加结点,注意要更改尾部指针
public void Add(LinkedNode node)
{
LinkedNode temp =Tail.tail.Link;//找到最后一个
temp.Link = node;
//更改尾结点指针
Tail.tail.Link = temp.Link;
Tail.length = Tail.length + 1;
}
//在第i个结点前插入元素node,head是第0个元素
public void Insert(LinkedNode node, int i)
{
//保证0<i<count
LinkedNode temp = Head;
int j = 0;
//找到第i-1个元素
while (temp.Link != null)
{
if (j == i - 1)
{
node.Link = temp.Link;
temp.Link = node;
Tail.length = Tail.length + 1;
break;
}
temp = temp.Link;
j++;
}
}
//删除第i个结点
public void Delete(int i)
{
LinkedNode temp = this.Head;
int j = 0;
//还是要找到i-1
while (temp.Link != null)
{
if (j == i - 1)
{
temp.Link = temp.Link.Link;
//判断是否删除最后一个结点
if (temp.Link == null)
{
Tail.tail.Link = temp;
}
Tail.length = Tail.length - 1;
break;
}
temp = temp.Link;
j++;
}
}
//获取元素个数,不包含头结点,尾结点
public int GetLength()
{
return Tail.length;
}
//清空链表
public void Clear()
{
while (Head.Link != null)
{
LinkedNode temp = Head;
Head = Head.Link;
temp = null;
}
Tail.length = 0;
Head = null;
}