diff options
Diffstat (limited to 'src/de/ostfalia/algo/ws18/s2/Management.java')
| -rw-r--r-- | src/de/ostfalia/algo/ws18/s2/Management.java | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/src/de/ostfalia/algo/ws18/s2/Management.java b/src/de/ostfalia/algo/ws18/s2/Management.java new file mode 100644 index 0000000..c88c13b --- /dev/null +++ b/src/de/ostfalia/algo/ws18/s2/Management.java @@ -0,0 +1,84 @@ +package de.ostfalia.algo.ws18.s2; + +import de.ostfalia.algo.ws18.base.IManagement; +import de.ostfalia.algo.ws18.base.IMember; +import de.ostfalia.algo.ws18.s1.LinkedListNode; + +public class Management extends de.ostfalia.algo.ws18.s1.Management implements IManagement { + public Management() { + super(); + } + + public Management(String csvMembers[]) { + super(csvMembers); + } + + public Management(String filename) { + super(filename); + } + + /** + * Add an element at TODO. + * + * @return true + */ + @Override + public boolean insert(IMember value) { + this.size++; + + LinkedListNode<IMember> newNode = new LinkedListNode<IMember>(value); + + if (this.head == null) { + this.head = newNode; + return true; + } + + this.numberOfOperations++; + if (newNode.getValue().getKey() < head.getValue().getKey()) { + newNode.setNext(this.head); + this.head = newNode; + return true; // added at the head + } + + LinkedListNode<IMember> currentNode = this.head; + while (currentNode.getNext() != null) { + this.numberOfOperations++; + if (newNode.getValue().getKey() < currentNode.getNext().getValue().getKey()) { + newNode.setNext(currentNode.getNext()); + currentNode.setNext(newNode); + return true; // added in between + } + + currentNode = currentNode.getNext(); + } + + currentNode.setNext(newNode); + return true; // added at the tail + } + + @Override + public IMember search(long key) { + this.numberOfOperations = 0; + + if (this.size == 0) { + return null; // won't find + } + + LinkedListNode<IMember> currentNode = this.head; + do { + this.numberOfOperations++; + long currentKey = currentNode.getValue().getKey(); + if (currentKey == key) { + return currentNode.getValue(); // found + } + if (currentKey > key) { + return null; // won't find + } + + currentNode = currentNode.getNext(); + } while (currentNode != null); + + return null; // not found + } + +} |
