我'試圖扭轉循環雙向鏈表,它看起來像這樣: 在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