2017-02-28 6 views
1

Dies wird als die Struktur der Warteschlange gegebenSwapping zwei veränderbare Werte

type 'a dqnode = { 
v: 'a; 
mutable next: 'a dqnode option; 
mutable prev: 'a dqnode option; 
} 

type 'a deque = { 
mutable head: 'a dqnode option; 
mutable tail: 'a dqnode option; 
} 

Ich versuche, eine Warteschlange zu umkehren und ich weiß, dass ich die Zeiger für jeden Knoten wechseln möchten. Zum Beispiel, wenn ich ‚eine dqnode Option aus der Warteschlange zu Some n übereinstimmen, dann will ich n.next < ändern - n.prev und n.prev (im Originalzustand) < - n.next

Ist Gibt es eine Möglichkeit, eine 'dqnode'-Option am Anfang meines Codes zu speichern, so dass ich die beiden Zeiger wechseln kann?

Etwas wie:

let newnode1:'a dqnode option = n.prev in 
n.prev <- n.next; n.next <- newnode1 

Ansonsten habe ich mit zwei Zeigern in der n.next Position nur am Ende.

Antwort

1

Ihre Beschreibung des Problems ist völlig korrekt, und Ihre vorgeschlagene Lösung ist auch korrekt.