我'试图扭转循环双向链表,它看起来像这样: 在C#反双向链表
这里是我的节点类:
private class Node<T>
{
public T Data { get; set; }
public Node<T> PreviousNode { get; set; }
public Node<T> NextNode { get; set; }
public Node(object data, Node<T> next, Node<T> previous)
{
Data = (T) data;
PreviousNode = previous;
NextNode = next;
}
}
这里是我的一部分链表类,这里是我的反向funtion存储:
public class DoublyLinkedList<T> :IList<T>
{
private Node<T> headerNode;
public DoublyLinkedList()
{
headerNode = new Node<T>(null, null, null);
headerNode.NextNode = headerNode;
headerNode.PreviousNode = headerNode;
Count = 0;
}
public void Insert(int index, T item)
{
Node<T> node;
if (index == Count)
node = new Node<T>(item, headerNode, headerNode.PreviousNode);
else
{
Node<T> tmp = FindNodeAt(index);
node = new Node<T>(item, tmp, tmp.PreviousNode);
}
node.PreviousNode.NextNode = node;
node.NextNode.PreviousNode = node;
Count++;
}
public void Reverse()
{
Node<T> temp;
for (Node<T> node = headerNode.NextNode; node != headerNode; node = node.NextNode)
{
}
}
我完全地坚持这一反向()函数。任何帮助?
您可以遍历交换下一个和上一个节点的列表。 – phuzi
你想扭转当前列表或创建一个与当前列表相反的新列表吗? – ChrisF
你可以简单地引入'bool IsReversed'属性,它将改变所有方法的索引编号和枚举。 – Sinatr