aboutsummaryrefslogtreecommitdiffstats
path: root/src/datastructures/linkedlists/sentinel-template
diff options
context:
space:
mode:
authorMattias Andrée <maandree@operamail.com>2014-01-23 12:15:43 +0100
committerMattias Andrée <maandree@operamail.com>2014-01-23 12:15:43 +0100
commit5c2e4bbff7a2c9d8f59620b10a5ce6ff15bd9b01 (patch)
treedbfaab2dd35c813bc4ba9be1dd904581722b7515 /src/datastructures/linkedlists/sentinel-template
parentwhoops + add array sentinel linked lists (diff)
downloadalgorithms-and-data-structures-5c2e4bbff7a2c9d8f59620b10a5ce6ff15bd9b01.tar.gz
algorithms-and-data-structures-5c2e4bbff7a2c9d8f59620b10a5ce6ff15bd9b01.tar.bz2
algorithms-and-data-structures-5c2e4bbff7a2c9d8f59620b10a5ce6ff15bd9b01.tar.xz
m + code deduplication
Signed-off-by: Mattias Andrée <maandree@operamail.com>
Diffstat (limited to '')
-rw-r--r--src/datastructures/linkedlists/sentinel-template198
1 files changed, 0 insertions, 198 deletions
diff --git a/src/datastructures/linkedlists/sentinel-template b/src/datastructures/linkedlists/sentinel-template
deleted file mode 100644
index 9de6019..0000000
--- a/src/datastructures/linkedlists/sentinel-template
+++ /dev/null
@@ -1,198 +0,0 @@
-/* -*- java -*- */
-/**
- * Copyright © 2014 Mattias Andrée (maandree@member.fsf.org)
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-{
- /**
- * Node for the list
- */
- public class Node
- {
- /**
- * Constructor
- *
- * @param value The value to store in the list
- */
- public Node(T value)
- {
- this.value = value;
- }
-
-
-
- /**
- * The value stored in the list by this node
- */
- public T value;
-
- /**
- * The next node in the list
- */
- public Node next = null;
-
-£>if (( with_prev )); then
- /**
- * The previous node in the list
- */
- public Node previous = null;
-£>fi
-
- }
-
-
-
- /**
- * The sentinel node in the list
- */
- public Node edge;
-
-
-
- /**
- * Initialiser
- */
- {
- this.edge = new Node(null);
- this.edge.next = this.edge;
-£>(( with_prev )) &&
- this.edge.previous = this.edge;
- }
-
-
-
- /**
- * Insert a value in the beginning of the list
- *
- * @param value The value to insert
- * @return The node that has been created and inserted
- */
- public Node insertBeginning(T value)
- {
- return insertAfter(value, this.edge);
- }
-
- /**
- * Remove the node at the beginning of the list
- *
- * @return The node that has been removed
- */
- public Node removeBeginning()
- {
- return removeAfter(this.edge);
- }
-
- /**
- * Insert a value after a specified, reference, node
- *
- * @param value The value to insert
- * @param predecessor The reference node
- * @return The node that has been created and inserted
- */
- public Node insertAfter(T value, Node predecessor)
- {
- Node node = new Node(value);
- node.next = predecessor.next;
- predecessor.next = node;
-£>if (( with_prev )); then
- node.previous = predecessor;
- node.next.previous = node;
-£>fi
- return node;
- }
-
- /**
- * Remove the node after a specified, reference, node
- *
- * @param predecessor The reference node
- * @return The node that has been removed
- */
- public Node removeAfter(Node predecessor)
- {
- Node node = predecessor.next;
- predecessor.next = node.next;
-£>if (( with_prev )); then
- predecessor.next.previous = predecessor;
-£>fi
- return node;
- }
-
-£>if (( with_prev )); then
- /**
- * Insert a value before a specified, reference, node
- *
- * @param value The value to insert
- * @param successor The reference node
- * @return The node that has been created and inserted
- */
- public Node insertBefore(T value, Node successor)
- {
- Node node = new Node(value);
- node.previous = successor.previous;
- successor.previous = node;
- node.next = successor;
- node.previous.next = node;
- return node;
- }
-
- /**
- * Remove the node before a specified, reference, node
- *
- * @param successor The reference node
- * @return The node that has been removed
- */
- public Node removeBefore(Node successor)
- {
- Node node = successor.previous;
- successor.previous = node.previous;
- successor.previous.next = successor;
- return node;
- }
-
- /**
- * Remove the node from the list
- *
- * @param node The node to remove
- */
- public void remove(Node node)
- {
- node.previous.next = node.next;
- node.next.previous = node.previous;
- }
-
- /**
- * Insert a value in the end of the list
- *
- * @param value The value to insert
- * @return The node that has been created and inserted
- */
- public Node insertEnd(T value)
- {
- return insertBefore(value, this.edge);
- }
-
- /**
- * Remove the node at the end of the list
- *
- * @return The node that has been removed
- */
- public Node removeEnd()
- {
- return removeBefore(this.edge);
- }
-£>fi
-
-}
-