Doubly-linked list/Element insertion: Difference between revisions
Content added Content deleted
(Racket) |
(Updated D entry) |
||
Line 230: | Line 230: | ||
struct Node(T) { |
struct Node(T) { |
||
T data; |
T data; |
||
typeof(this)* prev, next; |
|||
this(T data_, Node* prev_=null, Node* next_=null) { |
|||
⚫ | |||
prev = prev_; |
|||
next = next_; |
|||
⚫ | |||
} |
} |
||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
list = list.next; |
|||
} |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
if (prev) { |
if (prev) { |
||
auto newNode = new Node!T(item, prev, prev.next); |
auto newNode = new Node!T(item, prev, prev.next); |
||
Line 256: | Line 242: | ||
} else |
} else |
||
prev = new Node!T(item); |
prev = new Node!T(item); |
||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
} |
} |
||
Line 261: | Line 255: | ||
Node!(string)* list; |
Node!(string)* list; |
||
insertAfter(list, "A"); |
insertAfter(list, "A"); |
||
list.show; |
|||
insertAfter(list, "B"); |
insertAfter(list, "B"); |
||
list.show; |
|||
insertAfter(list, "C"); |
insertAfter(list, "C"); |
||
list.show; |
|||
}</lang> |
}</lang> |
||
{{out}} |
|||
Output: |
|||
<pre>A |
<pre>A |
||
A B |
A B |