Ich bin doppelt gelinkten Liste rückgängig zu versuchen, die wie folgt aussieht: Reverse doppelt verknüpfte Liste in C#
Hier ist meine Klasse Node ist:
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;
}
}
Und hier ist ein Teil meiner verlinkte Liste Klasse, hier ist mein Reverse funtion gespeichert ist:
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)
{
}
}
ich mit dieser Funktion reverse() komplett fest. Irgendeine Hilfe?
Sie können die Liste durchlaufen und den nächsten und vorherigen Knoten austauschen. – phuzi
Möchten Sie die aktuelle Liste umkehren oder eine neue Liste erstellen, die umgekehrt ist als die aktuelle Liste? – ChrisF
Sie könnten einfach die Eigenschaft 'bool IsReversed' einführen, die die Indexnummerierung und -zählung für alle Methoden ändert. – Sinatr