From c5c884a5fd54de74a9077db36d5daac38e5862f5 Mon Sep 17 00:00:00 2001 From: James Bowden <jbowden@caltech.edu> Date: Sun, 19 Feb 2023 18:34:16 -0800 Subject: [PATCH] template codes and clean imports and test helper --- src/edu/caltech/cs2/coloring/DSatur.java | 3 - src/edu/caltech/cs2/coloring/Program.java | 1 - .../cs2/datastructures/ArrayDeque.java | 76 ++++++++++++++++++ .../ChainingHashDictionary.java | 78 +++++++++++++++++++ .../cs2/datastructures/LinkedDeque.java | 75 ++++++++++++++++++ .../datastructures/MoveToFrontDictionary.java | 57 ++++++++++++++ .../caltech/cs2/helpers/RuntimeCounter.java | 9 +++ 7 files changed, 295 insertions(+), 4 deletions(-) create mode 100644 src/edu/caltech/cs2/datastructures/ArrayDeque.java create mode 100644 src/edu/caltech/cs2/datastructures/ChainingHashDictionary.java create mode 100644 src/edu/caltech/cs2/datastructures/LinkedDeque.java create mode 100644 src/edu/caltech/cs2/datastructures/MoveToFrontDictionary.java create mode 100644 tests/edu/caltech/cs2/helpers/RuntimeCounter.java diff --git a/src/edu/caltech/cs2/coloring/DSatur.java b/src/edu/caltech/cs2/coloring/DSatur.java index 49ced3f..17c67c0 100644 --- a/src/edu/caltech/cs2/coloring/DSatur.java +++ b/src/edu/caltech/cs2/coloring/DSatur.java @@ -1,10 +1,7 @@ package edu.caltech.cs2.coloring; -import edu.caltech.cs2.datastructures.ChainingHashDictionary; import edu.caltech.cs2.datastructures.ChainingHashSet; import edu.caltech.cs2.datastructures.MinFourHeap; -import edu.caltech.cs2.datastructures.MoveToFrontDictionary; -import edu.caltech.cs2.interfaces.IDictionary; import edu.caltech.cs2.interfaces.IPriorityQueue; import edu.caltech.cs2.interfaces.ISet; diff --git a/src/edu/caltech/cs2/coloring/Program.java b/src/edu/caltech/cs2/coloring/Program.java index 3b663e4..e578b55 100644 --- a/src/edu/caltech/cs2/coloring/Program.java +++ b/src/edu/caltech/cs2/coloring/Program.java @@ -5,7 +5,6 @@ import edu.caltech.cs2.datastructures.ChainingHashSet; import edu.caltech.cs2.interfaces.IDeque; import edu.caltech.cs2.interfaces.IDictionary; import edu.caltech.cs2.interfaces.ISet; -import edu.caltech.cs2.interfaces.IStack; import java.util.Iterator; diff --git a/src/edu/caltech/cs2/datastructures/ArrayDeque.java b/src/edu/caltech/cs2/datastructures/ArrayDeque.java new file mode 100644 index 0000000..4a7d0bf --- /dev/null +++ b/src/edu/caltech/cs2/datastructures/ArrayDeque.java @@ -0,0 +1,76 @@ +package edu.caltech.cs2.datastructures; + +import edu.caltech.cs2.interfaces.IDeque; +import edu.caltech.cs2.interfaces.IQueue; +import edu.caltech.cs2.interfaces.IStack; + +import java.util.Iterator; + +public class ArrayDeque<E> implements IDeque<E>, IQueue<E>, IStack<E> { + + @Override + public void addFront(E e) { + + } + + @Override + public void addBack(E e) { + + } + + @Override + public E removeFront() { + return null; + } + + @Override + public E removeBack() { + return null; + } + + @Override + public boolean enqueue(E e) { + return false; + } + + @Override + public E dequeue() { + return null; + } + + @Override + public boolean push(E e) { + return false; + } + + @Override + public E pop() { + return null; + } + + @Override + public E peekFront() { + return null; + } + + @Override + public E peekBack() { + return null; + } + + @Override + public E peek() { + return null; + } + + @Override + public Iterator<E> iterator() { + return null; + } + + @Override + public int size() { + return 0; + } +} + diff --git a/src/edu/caltech/cs2/datastructures/ChainingHashDictionary.java b/src/edu/caltech/cs2/datastructures/ChainingHashDictionary.java new file mode 100644 index 0000000..7a771e4 --- /dev/null +++ b/src/edu/caltech/cs2/datastructures/ChainingHashDictionary.java @@ -0,0 +1,78 @@ +package edu.caltech.cs2.datastructures; + +import edu.caltech.cs2.interfaces.ICollection; +import edu.caltech.cs2.interfaces.IDeque; +import edu.caltech.cs2.interfaces.IDictionary; +import edu.caltech.cs2.interfaces.IQueue; + +import java.util.Iterator; +import java.util.function.Supplier; +import java.util.stream.Stream; + +public class ChainingHashDictionary<K, V> implements IDictionary<K, V> { + private Supplier<IDictionary<K, V>> chain; + + public ChainingHashDictionary(Supplier<IDictionary<K, V>> chain) { + // student: TODO fill me in! + } + + /** + * @param key + * @return value corresponding to key + */ + @Override + public V get(K key) { + return null; + } + + @Override + public V remove(K key) { + return null; + } + + @Override + public V put(K key, V value) { + return null; + } + + @Override + public boolean containsKey(K key) { + return false; + } + + /** + * @param value + * @return true if the HashDictionary contains a key-value pair with + * this value, and false otherwise + */ + @Override + public boolean containsValue(V value) { + return false; + } + + /** + * @return number of key-value pairs in the HashDictionary + */ + @Override + public int size() { + return 0; + } + + @Override + public ICollection<K> keys() { + return null; + } + + @Override + public ICollection<V> values() { + return null; + } + + /** + * @return An iterator for all entries in the HashDictionary + */ + @Override + public Iterator<K> iterator() { + return null; + } +} diff --git a/src/edu/caltech/cs2/datastructures/LinkedDeque.java b/src/edu/caltech/cs2/datastructures/LinkedDeque.java new file mode 100644 index 0000000..212e5ff --- /dev/null +++ b/src/edu/caltech/cs2/datastructures/LinkedDeque.java @@ -0,0 +1,75 @@ +package edu.caltech.cs2.datastructures; + +import edu.caltech.cs2.interfaces.IDeque; +import edu.caltech.cs2.interfaces.IQueue; +import edu.caltech.cs2.interfaces.IStack; + +import java.util.Iterator; + +public class LinkedDeque<E> implements IDeque<E>, IQueue<E>, IStack<E> { + + @Override + public void addFront(E e) { + + } + + @Override + public void addBack(E e) { + + } + + @Override + public E removeFront() { + return null; + } + + @Override + public E removeBack() { + return null; + } + + @Override + public boolean enqueue(E e) { + return false; + } + + @Override + public E dequeue() { + return null; + } + + @Override + public boolean push(E e) { + return false; + } + + @Override + public E pop() { + return null; + } + + @Override + public E peekFront() { + return null; + } + + @Override + public E peekBack() { + return null; + } + + @Override + public E peek() { + return null; + } + + @Override + public Iterator<E> iterator() { + return null; + } + + @Override + public int size() { + return 0; + } +} diff --git a/src/edu/caltech/cs2/datastructures/MoveToFrontDictionary.java b/src/edu/caltech/cs2/datastructures/MoveToFrontDictionary.java new file mode 100644 index 0000000..1f7a813 --- /dev/null +++ b/src/edu/caltech/cs2/datastructures/MoveToFrontDictionary.java @@ -0,0 +1,57 @@ +package edu.caltech.cs2.datastructures; + +import edu.caltech.cs2.interfaces.ICollection; +import edu.caltech.cs2.interfaces.IDictionary; + +import java.util.Iterator; + +public class MoveToFrontDictionary<K, V> implements IDictionary<K,V> { + + public MoveToFrontDictionary() { + // student: TODO fill this in + } + + @Override + public V remove(K key) { + return null; + } + + @Override + public V put(K key, V value) { + return null; + } + + @Override + public boolean containsKey(K key) { + return this.get(key) != null; + } + + @Override + public boolean containsValue(V value) { + return this.values().contains(value); + } + + @Override + public int size() { + return 0; + } + + @Override + public ICollection<K> keys() { + return null; + } + + @Override + public ICollection<V> values() { + return null; + } + + public V get(K key) { + return null; + } + + @Override + public Iterator<K> iterator() { + return null; + } +} diff --git a/tests/edu/caltech/cs2/helpers/RuntimeCounter.java b/tests/edu/caltech/cs2/helpers/RuntimeCounter.java new file mode 100644 index 0000000..960c169 --- /dev/null +++ b/tests/edu/caltech/cs2/helpers/RuntimeCounter.java @@ -0,0 +1,9 @@ +package edu.caltech.cs2.helpers; + +public class RuntimeCounter { + public static int NUM_CALLS = 0; + + public static void inc() { + NUM_CALLS++; + } +} -- GitLab