(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)
- 7. Convert Standard POS form to Canonical POS form. (A+B)(A+ C)(B+C) 8. Given that F(a, b, c, d) = Σm(1, 3, 4, 6, 8, 9, 12), (i) Write the product of maxterms (canonical POS) for F. (ii) Write the canonical SOP and canonical POS for F.arrow_forward1. Evaluate the following expression when A = 1, B = O, C = 1, D = 0 F = AB + CD + (A + B)C 2. Find F, the complement of function F, Write your answer using overbars. F(W, X, Y, Z) = WX + YZ +XZ 3. Determine the truth table for the function F = XY+XZ 4. Show with a truth table that the following is true: X(YZ) = XY+XZarrow_forward. 6. Find the dual of the Boolean expressions. (swap + with and O with 1; do not complement variables). a) A + BC b) (X + Y)(X + Z) c) P+Q+ RSarrow_forward
- 5. Simplify the following Boolean expression. Show each simplification step and identity used. a) ABAB + ABC b) (MN)(M + P) + MParrow_forwardBoolean Algebra HW #4 Show all intermediate steps (truth tables, algebraic steps, and justifications such as identities or theorems) for full credit. 1. Evaluate the following expression when A = 1, B = O, C = 1, D = 0 F = AB + CD + (A+B)C 2. Find F, the complement of function F, Write your answer using overbars. F(W,X,Y,Z) = WX+YZ+XZ 3. Determine the truth table for the function F=XY+XZ 4. Show with a truth table that the following is true: X(Y+Z) = XY+XZ 5. Simplify the following Boolean expression. Show each simplification step and identity used. a) AB + AB + ABC b) (M+N)(M + P) + MP 6. Find the dual of the Boolean expressions. (swap + with and O with 1; do not complement variables). a) ABC b) (X + Y)(X + Z) c) P+Q+ RS 7. Convert Standard POS form to Canonical POS form. • (A+B)(Ā + C) (B+C) 8. Given that F(a, b, c, d) = Em(1, 3, 4, 6, 8, 9, 12) (i) Write the product of maxterms (canonical POS) for F. (ii) Write the canonical SOP and canonical POS for F.arrow_forwardConsider the following statement, which is intended to assign the value of the expression, the variable result Assume that the double variables. x-ya and b have been properly declared and initialized. (xy) to double result = missing code /: 17 Mark for Review Which of the following can replace / missing code / so that the statement works as intended? Math.sqrt((x + y) 2/ Math.abs(a, b)) Math.sqrt((x + y) 2/ Math.abs(a - b)) Math.sqrt(Math.pow(x + y, 2) / Math. abs(a, b)) Math.sqrt(Math.pow(x + y, 2) / Math.abs (a - b))arrow_forward
- Consider the following code segment, which is intended to print the digits of the two-digit int number num in reverse order. For example, if num has the value 75, the code segment should print 57. Assume that num has been properly declared and initialized. /missing code */ System.out.print (onesDigit); System.out.print (tensDigit); 14 Mark for Review Which of the following can be used to replace / missing code so that the code segment works as intended? int onesDigit num 10; int tensDigit num / 10; int onesDigit- num / 10; int tensDigit num 10; int onesDigit -10/num; int tensDigit 10 num; -Undo int onesDigit num 100; Undo int tensDigit-num / 100;arrow_forwardThe following code segment is intended to round yal to the nearest integer and print the result double val--0.7 int roundedVal (int) (val +0.51 System.out.println(roundedValu 25 Mark for Review Which of the following best describes the behavior of the code segment? The code segment does not work as intended because the expression (val +0.5) should be cast to a double instead of an int The code segment does not work as intended because val should be cast to an int before 0.5 is added to it. Highlights & Notes Reference Undo Undo The code segment does not work as intended because the expression -Unda positive ר .arrow_forwardIn the following code segment, mon and tue are properly declared String variables. String strl-mon.substring(9. mon.indexOf(" "). String str2-tue.substring(tue.indexOf(" ") + 1). System.out.println(strl+and+str2): க 21 Mark for Review For which of the following values of mon and tue will the code segment print "cloudy and foggy"? mon tue "cloudy today" "foggy tomorrow" mon tue "cloudy today" "tomorrow foggy" mon tue "today cloudy" "foggy tomorrow" mon tue "today cloudy" "tomorrow foggy"arrow_forward
- G Consider the following code segment, which is intended to assign to num a random integer value between min and max, inclusive, each with an equal chance of being assigned to num. Assume that min and max are integer variables and that the value of max is greater than the value of min. 24 Mark for Review Which of the following can replace /* missing code */ so that the code segment works as intended? double rn = Math.random();_ int num = /* missing code */ ;_ D (int) (rn * max) + min ABC (A) (int) (rn * (max- min)) + min (B (int) (rn * (max min)) + 1 (int) (rn * (max min + 1)) + minarrow_forwardWrite the truth table for each of the following logic functions: (a) FX Y+X'. Y'. Z (b) FW' X + Y' · Z' + X' · Z (c) F=W+X' · (Y' + Z) . . (d) F A B+ B' C+C' D + D' A .arrow_forwardUse the theorems of switching algebra to simplify each of the following logic functions: (a) F W X Y Z (W X Y . Z'+W X Y Z (b) FA B+ A . B C D+A B.D. E' + A B C W X Y Z+W X Y' - Z) E + C D E .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




