Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

INSERT THIS LINE OF CODE if (N >= vals.length) resize(2*N); IN THE CORRECT SPOT SO THAT THE OUTPUT IN THE CODE LISTING BELOW IS PRODUCED

INSERT THIS LINE OF CODE

if (N >= vals.length) resize(2*N); IN THE CORRECT SPOT SO THAT THE OUTPUT IN THE CODE LISTING BELOW IS PRODUCED

SUBMIT OUTPUT SCREENSHOT

Please explain in 4 sentences of why the code should be placed where it is.

/*************************************************************************

* Compilation: javac ArrayST.java

* Execution: java ArrayST < input.txt

* Dependencies: StdIn.java StdOut.java

* Data files: http://algs4.cs.princeton.edu/31elementary/tinyST.txt

*

*

* Symbol table implementation with unordered array.

*

* % java ArrayST < tiny.txt

* S 0

* H 5

* X 7

* R 3

* C 4

* L 11

* A 8

* M 9

* P 10

* E 12

*

*************************************************************************/

public class ArrayST {

private static final int INIT_SIZE = 8;

private Value[] vals; // symbol table values

private Key[] keys; // symbol table keys

private int N = 0; // number of elements in symbol table

public ArrayST() {

keys = (Key[]) new Object[INIT_SIZE];

vals = (Value[]) new Object[INIT_SIZE];

}

// return the number of key-value pairs in the symbol table

public int size() { return N; }

// is the symbol table empty?

public boolean isEmpty() { return size() == 0; }

// resize the parallel arrays to the given capacity

private void resize(int capacity) {

Key[] tempk = (Key[]) new Object[capacity];

Value[] tempv = (Value[]) new Object[capacity];

for (int i = 0; i < N; i++) tempk[i] = keys[i];

for (int i = 0; i < N; i++) tempv[i] = vals[i];

keys = tempk;

vals = tempv;

}

// insert the key-value pair into the symbol table

public void put(Key key, Value val) {

// to deal with duplicates

delete(key);

// add new key and value at the end of array

vals[N] = val;

keys[N] = key;

N++;

}

public Value get(Key key) {

for (int i = 0; i < N; i++)

if (keys[i].equals(key)) return vals[i];

return null;

}

public Iterable keys() {

Queue queue = new Queue();

for (int i = 0; i < N; i++)

queue.enqueue(keys[i]);

return queue;

}

// remove given key (and associated value)

public void delete(Key key) {

for (int i = 0; i < N; i++) {

if (key.equals(keys[i])) {

keys[i] = keys[N-1];

vals[i] = vals[N-1];

keys[N-1] = null;

vals[N-1] = null;

N--;

return;

}

}

}

/***********************************************************************

* Test routine.

**********************************************************************/

public static void main(String[] args) {

ArrayST st = new ArrayST();

for (int i = 0; !StdIn.isEmpty(); i++) {

String key = StdIn.readString();

st.put(key, i);

}

for (String s : st.keys())

StdOut.println(s + " " + st.get(s));

}

}

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image_2

Step: 3

blur-text-image_3

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

More Books

Students also viewed these Databases questions

Question

internationalization of business?

Answered: 1 week ago