diff options
author | Mattias Andrée <maandree@operamail.com> | 2014-01-22 12:18:42 +0100 |
---|---|---|
committer | Mattias Andrée <maandree@operamail.com> | 2014-01-22 12:18:42 +0100 |
commit | 3344d6da4af50522d4de0920b010e99f8377cdd0 (patch) | |
tree | 809cca612304c4fc47f316b1d043a9117873bb8a /src/datastructures/linkedlists/template | |
parent | m doc (diff) | |
download | algorithms-and-data-structures-3344d6da4af50522d4de0920b010e99f8377cdd0.tar.gz algorithms-and-data-structures-3344d6da4af50522d4de0920b010e99f8377cdd0.tar.bz2 algorithms-and-data-structures-3344d6da4af50522d4de0920b010e99f8377cdd0.tar.xz |
preparation for circularly linked lists
Signed-off-by: Mattias Andrée <maandree@operamail.com>
Diffstat (limited to 'src/datastructures/linkedlists/template')
-rw-r--r-- | src/datastructures/linkedlists/template | 41 |
1 files changed, 33 insertions, 8 deletions
diff --git a/src/datastructures/linkedlists/template b/src/datastructures/linkedlists/template index b0311b5..0a24a89 100644 --- a/src/datastructures/linkedlists/template +++ b/src/datastructures/linkedlists/template @@ -54,10 +54,12 @@ +£>if (( with_head )); then /** * The first node in the list */ public Node head = null; +£>fi £>if (( with_tail )); then /** @@ -67,12 +69,29 @@ £>fi + +£>if (( 1 - with_head )) && (( 1 - with_tail )); then + /** + * Creates the initial node in a circularly linked list + * + * @param value The value of the initial node + * @return The node that has been created and inserted + */ + public Node create(T value) + { + Node node = new Node(value); +£>(( with_prev )) && + node.previous = node; + return node.next = node; + } +£>fi +£>if (( with_head )); then /** * Insert a value in the beginning of the list * * @param value The value to insert - * @return The node that has be created and inserted + * @return The node that has been created and inserted */ public Node insertBeginning(T value) { @@ -110,13 +129,14 @@ £>fi return node; } +£>fi /** * Insert a value after a specified, reference, node * * @param value The value to insert * @param predecessor The reference node - * @return The node that has be created and inserted + * @return The node that has been created and inserted */ public Node insertAfter(T value, Node predecessor) { @@ -163,7 +183,7 @@ * * @param value The value to insert * @param successor The reference node - * @return The node that has be created and inserted + * @return The node that has been created and inserted */ public Node insertBefore(T value, Node successor) { @@ -173,8 +193,10 @@ node.next = successor; if (node.previous != null) node.previous.next = node; +£>if (( with_tail )); then if (this.head == successor) this.head = node; +£>fi return node; } @@ -191,8 +213,10 @@ successor.previous = node.previous; else if (node.previous != null) node.previous.next = successor; +£>if (( with_head )); then if (this.head == node) this.head = successor; +£>fi return node; } @@ -203,11 +227,12 @@ */ public void remove(Node node) { - if (node.previous == null) - this.head = node.next; - else + if (node.previous != null) node.previous.next = node.next; - +£>if (( with_head )); then + else + this.head = node.next; +£>fi if (node.next != null) node.next.previous = node.previous; £>if (( with_tail )); then @@ -222,7 +247,7 @@ * Insert a value in the end of the list * * @param value The value to insert - * @return The node that has be created and inserted + * @return The node that has been created and inserted */ public Node insertEnd(T value) { |