(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
Instructor Solutions Manual For Introduction To Java Programming And Data Structures, Comprehensive Version, 11th Edition
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)
- The Example 2 address is stored able named nail, which consists of a first name wed by 18, wed name Assume that at least three characters Write a statement that uses the method and to the length of the first name Wote another statement that between and the length of the last name The same wed by followed by the last name flowed by the last cost of the first of the first name followed by andomly ected character from the frst name, followed by cted from a random postc Ternington generate a random number between the athad ad to generate aarrow_forward史》 Mark for Review Which of the following could be printed as a result of executing this code segment? 8:15 O 912 10 7 15 11arrow_forward3 Mark for Review Which of the following best describes the value assigned to b when the code segment is executed? A random integer between 0 and a1, inclusive A random integer between a and 2 a, inclusive A random integer between a and 2 a 1, inclusivearrow_forward
- Mark for Review Every year a student is chosen at random to win a prize. The first part of this selection involves choosing which class will be selected. You are asked to write the code to select a student, from grades 9-12, inclusive, and you are to assume there is an equal probability for each to occur. The following incomplete statement appears in a program that computes the value of the random number chosen. int year = /* missing code */; Which of the following replacements for /* missing code */ would best simulate the selection of a grade from 9-12? (int)(Math.random() * 13) Ⓑ (int)(Math.random()*9)+4 (int)(Math.random() * 4) +9 (int)(Math.random()*419 A B Undoarrow_forward4 Mark for Review Assume that the following variable declarations have been made. double d = Math.random(); double r; Which of the following assigns a value to r from the uniform distribution over the range 0.5 ≤r < 5.5 ? B r = d + 0.5; (C) r = d + 0.5 * 5.0; D r = d 5.0%; r = d 5.0+ 0.5; Barrow_forwardWhich of the following statements assigns a random integer between 25 and 60, inclusive, to rn? int rn= (int) (Math.random() * 25) + 36%;B B int rn = (int) (Math.random() * 25) + 60; int rn= (int) (Math.random() * 36) + 25; int rn= (int) (Math.random() * 60) + 25;arrow_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




