
(Revising Listing 19.1) Revise the GenericStack class in Listing 19.1 to implement it using an array rather than an ArrayList. You should check the array size before adding a new element to the stack. If the array is full, create a new array that doubles the current array size and copy the elements front the current array to the new array.

Revising Listing 19.1
Program Plan:
- Define the class named “GenericStack<E>”.
- Declare appropriate variables to program.
- Define constructors “GenericStack()” which assigns initial size of stack and “GenericStack(initialCapaciy)” which assigns size of the stack.
- Define a method “push()” which pass “E o” as parameter.
- Using “if” condition, check the value of “N” greater than “elements.length”.
- Assign size of new array.
- Copy old array into new array.
- Return array elements.
- Using “if” condition, check the value of “N” greater than “elements.length”.
- Define a method “pop()” which pop out stack elements.
- Return array elements.
- Define a method “peek()” which returns top of the stack.
- Define a method “isEmpty()” which returns “0”.
- Define a method “getSize()” which returns size of the stack.
- Define the main method.
- Declare the GenericStack object “obj”, using the object insert elements into stack.
- Using “while” loop, print the elements on screen.
The following JAVA code is to revise the “GenericStack” class which implements array rather than an “ArrayList”.
Explanation of Solution
Program:
//Class definition
class GenericStack<E>
{
/*Declaration of variables*/
public final static int INITIAL_SIZE = 16;
private E[] elements;
private int N;
/*Construct a stack with the default initial capacity */
public GenericStack()
{
//Assign initial size
this(INITIAL_SIZE);
}
/*Construct a stack with the specified initial capacity */
public GenericStack(int initialCapacity)
{
//Assign size
elements = (E[])new Object[initialCapacity];
}
/*Push a new element into the top of the stack */
public E push(E o)
{
//Condition
if (N >= elements.length)
{
//Assign array size into variable "t"
E[] t = (E[])new Object[elements.length * 2];
//Copy array elements
System.arraycopy(elements, 0, t, 0, elements.length);
//Assign "t" into "elements"
elements = t;
}
//Return statement
return elements[N++] = o;
}
/*Return and remove the top element from the stack*/
public E pop()
{
//Return statement
return elements[--N];
}
/*Return the top element from the stack */
public E peek()
{
//Return statement
return elements[N - 1];
}
/*Function definition to check empty*/
public boolean isEmpty()
{
//Return statement
return N == 0;
}
/*Return the number of elements in the stack */
public int getSize()
{
//Return statement
return N;
}
//Main method
public static void main(String[] args)
{
//Assign object to "GenericStack"
GenericStack<String> obj = new GenericStack<>();
//Push elements into stack
obj.push("London");
obj.push("Paris");
obj.push("Berlin");
//Print elements
System.out.print("Stack 1: ");
//Loop
while (!obj.isEmpty())
{
//Print statement
System.out.print(obj.pop() + " ");
}
//Print statement
System.out.println("\n");
}
}
Stack 1: Berlin Paris London
Want to see more full solutions like this?
Chapter 19 Solutions
MyLab Programming with Pearson eText -- Access Card -- for Introduction to Java Programming and Data Structures, Comprehensive Version
Additional Engineering Textbook Solutions
INTERNATIONAL EDITION---Engineering Mechanics: Statics, 14th edition (SI unit)
Introduction To Programming Using Visual Basic (11th Edition)
Mechanics of Materials (10th Edition)
Java: An Introduction to Problem Solving and Programming (8th Edition)
Web Development and Design Foundations with HTML5 (8th Edition)
Starting Out with Python (4th Edition)
- There are two network models and name them while providing a couple of advantages and disadvantages for each network model.arrow_forwardhttps://docs.google.com/document/d/1lk0DgaWfVezagyjAEskyPoe9Ciw3J2XUH_HQfnWSmwU/edit?usp=sharing use the link to answer the question below b) As part of your listed data elements, define the following metadata for each: Data/FieldType, Field Size, and any possible constraint/s or needed c) Identify and describe the relationship/s among the tables. Please provide an example toillustrate Referential Integrity and explain why it is essential for data credibility. I have inserted the data elements below for referencearrow_forwardWhy do we use NAT and PAT technologies? What happens without them? What is the major difference between NAT and PAT (Port Address Translation)? please answer it in the simplest way as possiblearrow_forward
- What is the difference between physical connection (Physical topology) and logical connection (Logical topology)? Why are both necessary? Why do we need the Seven-Layer OSI model? What will happen If we don’t have it? Why do we need official standards for copper cable and fiber-optic cable? What happens without the standard? please answer in the simplest way as possiblearrow_forwardSuppose that the MinGap method below is added to the Treap class on Blackboard. public int MinGap( ) Returns the absolute difference between the two closest numbers in the treap. For example, if the numbers are {2, 5, 7, 11, 12, 15, 20} then MinGap would returns 1, the absolute difference between 11 and 12. Requirements 1. Describe in a separate Design Document what additional data is needed and how that data is used to support an time complexity of O(1) for the MinGap method. Show as well that the methods Add and Remove can efficiently maintain this data as items are added and removed. (6 marks) 2. Re-implement the methods Add and Remove of the Treap class to maintain the augmented data in expected O(log n) time. (6 marks) 3. Implement the MinGap method. (4 marks) 4. Test your new method thoroughly. Include your test cases and results in a Test Document. (4 marks)arrow_forwardSuppose that the two Rank methods below are added to the Skip List class on Blackboard. public int Rank(T item) Returns the rank of the given item. public T Rank(int i) Returns the item with the given rank i. Requirements 1. Describe in a separate Design Document what additional data is needed and how that data is used to support an expected time complexity of O(log n) for each of the Rank methods. Show as well that the methods Insert and Remove can efficiently maintain this data as items are inserted and removed. (7 marks) 2. Re-implement the methods Insert and Remove of the Skip List class to maintain the augmented data in expected O(log n) time. Using the Contains method, ensure that added items are distinct. (6 marks) 3. Implement the two Rank methods. (8 marks) 4. Test your new methods thoroughly. Include your test cases and results in a Test Document. (4 marks)arrow_forward
- https://docs.google.com/document/d/1lk0DgaWfVezagyjAEskyPoe9Ciw3J2XUH_HQfnWSmwU/edit?usp=sharing use the link to answer the question below b) As part of your listed data elements, define the following metadata for each: Data/FieldType, Field Size, and any possible constraint/s or needed c) Identify and describe the relationship/s among the tables. Please provide an example toillustrate Referential Integrity and explain why it is essential for data credibility. I have inserted the data elements below for referencearrow_forwardHighlight the main differences between Computer Assisted Coding and Alone Coding with their similaritiesarrow_forwardSuppose that the MinGap method below is added to the Treap class on Blackboard. public int MinGap ( ) Returns the absolute difference between the two closest numbers in the treap. For example, if the numbers are {2, 5, 7, 11, 12, 15, 20} then MinGap would returns 1, the absolute difference between 11 and 12. Requirements 1. Describe in a separate Design Document what additional data is needed and how that data is used to support an time complexity of O(1) for the MinGap method. Show as well that the methods Add and Remove can efficiently maintain this data as items are added and removed. (6 marks) 2. Re-implement the methods Add and Remove of the Treap class to maintain the augmented data in expected O(log n) time. (6 marks) 3. Implement the MinGap method. (4 marks) 4. Test your new method thoroughly. Include your test cases and results in a Test Document. (4 marks)arrow_forward
- Suppose that the two Rank methods below are added to the Skip List class on Blackboard. public int Rank (T item) Returns the rank of the given item. public T Rank(int i) Returns the item with the given rank i. Requirements 1. Describe in a separate Design Document what additional data is needed and how that data is used to support an expected time complexity of O(log n) for each of the Rank methods. Show as well that the methods Insert and Remove can efficiently maintain this data as items are inserted and removed. (7 marks) 2. Re-implement the methods Insert and Remove of the Skip List class to maintain the augmented data in expected O(log n) time. Using the Contains method, ensure that added items are distinct. (6 marks) 3. Implement the two Rank methods. (8 marks) 4. Test your new methods thoroughly. Include your test cases and results in a Test Document. (4 marks)arrow_forwardSuppose that the two Rank methods below are added to the Skip List class on Blackboard. public int Rank (T item) Returns the rank of the given item. public T Rank(int i) Returns the item with the given rank i. Requirements 1. Describe in a separate Design Document what additional data is needed and how that data is used to support an expected time complexity of O(log n) for each of the Rank methods. Show as well that the methods Insert and Remove can efficiently maintain this data as items are inserted and removed. (7 marks) 2. Re-implement the methods Insert and Remove of the Skip List class to maintain the augmented data in expected O(log n) time. Using the Contains method, ensure that added items are distinct. (6 marks) 3. Implement the two Rank methods. (8 marks) 4. Test your new methods thoroughly. Include your test cases and results in a Test Document. (4 marks)arrow_forwardautomata theoryarrow_forward
- C++ Programming: From Problem Analysis to Program...Computer ScienceISBN:9781337102087Author:D. S. MalikPublisher:Cengage LearningProgramming Logic & Design ComprehensiveComputer ScienceISBN:9781337669405Author:FARRELLPublisher:CengageEBK JAVA PROGRAMMINGComputer ScienceISBN:9781337671385Author:FARRELLPublisher:CENGAGE LEARNING - CONSIGNMENT
- New Perspectives on HTML5, CSS3, and JavaScriptComputer ScienceISBN:9781305503922Author:Patrick M. CareyPublisher:Cengage LearningProgramming with Microsoft Visual Basic 2017Computer ScienceISBN:9781337102124Author:Diane ZakPublisher:Cengage LearningSystems ArchitectureComputer ScienceISBN:9781305080195Author:Stephen D. BurdPublisher:Cengage Learning




