前几天项目里需要做一个循环展示装备的功能,我想到了用双向循环链表的结构可以很好的实现这个功能,以下是我根据别人设计的链表结构改装的(语言C#):
/// <summary>
/// 链表节点(双向循环链表节点的构造类)
/// </summary>
class DlNode<T>
{
public T data = default(T); //数据域
public DlNode<T> next; //前驱节点
public DlNode<T> prior; //后继节点
public DlNode(DlNode<T> prior, T data, DlNode<T> next)
{
this.prior = prior;
this.data = data;
this.next = next;
}
public DlNode()
{
}
public T getData()
{
return data;
}
public void setData(T data)
{
this.data = data;
}
public DlNode<T> getNext()
{
return next;
}
public void setNext(DlNode<T> next)
{
this.next = next;
}
public DlNode<T> getPrior()
{
return prior;
}
public void setPrior(DlNode<T> prior)
{
this.prior = prior;
}
}
/// <summary>
/// 链表(双向循环链表的构造类)
/// </summary>
class DlList<T>
{
public DlNode<T> dlHead;
int size;
public DlList()
{
dlHead = new DlNode<T>();
dlHead.prior = dlHead;
dlHead.next = dlHead;
size = 0;
}
public DlList(List<T> t)
{
// 用列表a构造一个双向循环链表
dlHead = new DlNode<T>();
dlHead.prior = dlHead;
dlHead.next = dlHead;
DlNode<T> p = null;
for (int i = t.Count - 1; i >= 0; i--)
{
p = new DlNode<T>(dlHead.prior, t[i], dlHead.next);
dlHead.next.setPrior(p);
dlHead.setNext(p);
dlHead.prior.setNext(p);
}
size = t.Count;
}
}