home / study / engineering / computer science / questions and answers / - you ne
ID: 3938593 • Letter: H
Question
home / study / engineering / computer science / questions and answers / - you need to implement simplelinkedstack.java ...
Question: - You need to implement SimpleLinkedSta...
Bookmark
/**
An interface for the ADT stack.
Do not modify this file
*/
package PJ2;
public interface StackInterface<T>
{
/** Gets the current number of data in this stack.
@return the integer number of entries currently in the stack*/
public int size();
/** Adds a new data to the top of this stack.
@param aData an object to be added to the stack */
public void push(T aData);
/** Removes and returns this stack's top data.
@return either the object at the top of the stack or,
if the stack is empty before the operation, null */
public T pop();
/** Retrieves this stack's top data.
@return either the data at the top of the stack or
null if the stack is empty */
public T peek();
/** Detects whether this stack is empty.
@return true if the stack is empty */
public boolean empty();
/** Removes all data from this stack */
public void clear();
} // end StackInterface
/**
A class of stacks whose entries are stored in a chain of nodes.
Implement all methods in SimpleLinkedStack class using
the inner Node class.
Main Reference : text book or class notes
Do not change or add data fields
Do not add new methods
You may access Node object fields directly, i.e. data and next
*/
package PJ2;
public class SimpleLinkedStack<T> implements StackInterface<T>
{
// Data fields
private Node topNode; // references the first node in the chain
private int count; // number of data in this stack
public SimpleLinkedStack()
{
// add stataments
} // end default constructor
public void push(T newData)
{
// add stataments
} // end push
public T peek()
{
// add stataments
return null;
} // end peek
public T pop()
{
// add stataments
return null;
} // end pop
public boolean empty()
{
// add stataments
return false;
} // end empty
public int size()
{
// add stataments
return -1;
} // end isEmpty
public void clear()
{
// add stataments
} // end clear
public String toString()
{
// add stataments
// note: data class in stack must implement toString() method
// return a list of data in Stack, separate them with ','
return "";
}
/****************************************************
private inner node class
Do not modify this class!!
you may access data and next directly
***************************************************/
private class Node
{
private T data; // entry in list
private Node next; // link to next node
private Node (T dataPortion)
{
data = dataPortion;
next = null; // set next to NULL
} // end constructor
private Node (T dataPortion, Node nextNode)
{
data = dataPortion;
next = nextNode; // set next to refer to nextNode
} // end constructor
} // end Node
/****************************************************
Do not modify: Stack test
****************************************************/
public static void main (String args[])
{
System.out.println(" "+
"******************************************************* "+
"Sample Expected output: "+
" "+
"OK: stack is empty "+
"Push 3 data: 10, 30, 50 "+
"Print stack [50,30,10,] "+
"OK: stack size is 3 "+
"OK: peek stack top is 50 "+
"OK: stack is not empty "+
"Pop 2 data: 50, 30 "+
"Print stack [30,10,] "+
"Print stack [10,] "+
"OK: stack pop data is 30 "+
"Clear stack "+
"Print stack [] "+
" "+
"*******************************************************");
System.out.println(" Your Test output: ");
StackInterface<Integer> s = new SimpleLinkedStack<Integer>();
if (s.empty())
System.out.println("OK: stack is empty");
else
System.out.println("Error: stack is not empty");
s.push(10);
s.push(30);
s.push(50);
System.out.println("Push 3 data: 10, 30, 50");
System.out.println("Print stack " + s);
if (s.size() == 3)
System.out.println("OK: stack size is 3");
else
System.out.println("Error: stack size is " + s.size());
if (s.peek() == 50)
System.out.println("OK: peek stack top is 50");
else
System.out.println("Error: peek stack top is " + s.size());
if (!s.empty())
System.out.println("OK: stack is not empty");
else
System.out.println("Error: stack is empty");
System.out.println("Pop 2 data: 50, 30");
s.pop();
System.out.println("Print stack " + s);
int data=s.pop();
System.out.println("Print stack " + s);
if (data == 30)
System.out.println("OK: stack pop data is 30");
else
System.out.println("Error: stack pop data is " + data);
System.out.println("Clear stack");
s.clear();
System.out.println("Print stack " + s);
}
} // end Stack
Explanation / Answer
/**
An interface for the ADT stack.
Do not modify this file
*/
package PJ2;
public interface StackInterface<T> {
/**
* Gets the current number of data in this stack.
*
* @return the integer number of entries currently in the stack
*/
public int size();
/**
* Adds a new data to the top of this stack.
*
* @param aData
* an object to be added to the stack
*/
public void push(T aData);
/**
* Removes and returns this stack's top data.
*
* @return either the object at the top of the stack or, if the stack is
* empty before the operation, null
*/
public T pop();
/**
* Retrieves this stack's top data.
*
* @return either the data at the top of the stack or null if the stack is
* empty
*/
public T peek();
/**
* Detects whether this stack is empty.
*
* @return true if the stack is empty
*/
public boolean empty();
/** Removes all data from this stack */
public void clear();
} // end StackInterface
/**
A class of stacks whose entries are stored in a chain of nodes.
Implement all methods in SimpleLinkedStack class using
the inner Node class.
Main Reference : text book or class notes
Do not change or add data fields
Do not add new methods
You may access Node object fields directly, i.e. data and next
*/
package PJ2;
import java.util.NoSuchElementException;
public class SimpleLinkedStack<T> implements StackInterface<T> {
// Data fields
private Node topNode; // references the first node in the chain
private int count; // number of data in this stack
public SimpleLinkedStack() {
// add stataments
topNode = null;
count = 0;
} // end default constructor
public void push(T newData) {
// add stataments
Node oldTop = topNode;
topNode = new Node(newData);
// topNode.data=newData;
topNode.next = oldTop;
count++;
} // end push
public boolean isEmpty() {
return topNode == null;
}
public T peek() {
if (isEmpty())
throw new NoSuchElementException("Stack underflow");
return topNode.data;
} // end peek
public T pop() {
// add stataments
// add stataments
if (isEmpty())
throw new NoSuchElementException("Stack underflow");
T item = topNode.data; // save item to return
topNode = topNode.next; // delete first node
count--;
return item;
} // end pop
public boolean empty() {
// add stataments
return false;
} // end empty
public int size() {
// add stataments
return count;
} // end isEmpty
public void clear() {
// add stataments
topNode = null;
count = 0;
} // end clear
public String toString() {
// add stataments
// note: data class in stack must implement toString() method
// return a list of data in Stack, separate them with ','
StringBuilder builder = new StringBuilder();
Node current = topNode;
while (current != null) {
builder.append(current.data).append(",");
current = current.next;
}
return builder.toString();
}
/****************************************************
* private inner node class Do not modify this class!! you may access data
* and next directly
***************************************************/
private class Node {
private T data; // entry in list
private Node next; // link to next node
private Node(T dataPortion) {
data = dataPortion;
next = null; // set next to NULL
} // end constructor
private Node(T dataPortion, Node nextNode) {
data = dataPortion;
next = nextNode; // set next to refer to nextNode
} // end constructor
} // end Node
/****************************************************
* Do not modify: Stack test
****************************************************/
public static void main(String args[]) {
System.out.println(" "
+ "******************************************************* "
+ "Sample Expected output: " + " " + "OK: stack is empty "
+ "Push 3 data: 10, 30, 50 " + "Print stack [50,30,10,] "
+ "OK: stack size is 3 " + "OK: peek stack top is 50 "
+ "OK: stack is not empty " + "Pop 2 data: 50, 30 "
+ "Print stack [30,10,] " + "Print stack [10,] "
+ "OK: stack pop data is 30 " + "Clear stack "
+ "Print stack [] " + " "
+ "*******************************************************");
System.out.println(" Your Test output: ");
StackInterface<Integer> s = new SimpleLinkedStack<Integer>();
if (s.empty())
System.out.println("OK: stack is empty");
else
System.out.println("Error: stack is not empty");
s.push(10);
s.push(30);
s.push(50);
System.out.println("Push 3 data: 10, 30, 50");
System.out.println("Print stack " + s);
if (s.size() == 3)
System.out.println("OK: stack size is 3");
else
System.out.println("Error: stack size is " + s.size());
if (s.peek() == 50)
System.out.println("OK: peek stack top is 50");
else
System.out.println("Error: peek stack top is " + s.size());
if (!s.empty())
System.out.println("OK: stack is not empty");
else
System.out.println("Error: stack is empty");
System.out.println("Pop 2 data: 50, 30");
s.pop();
System.out.println("Print stack " + s);
int data = s.pop();
System.out.println("Print stack " + s);
if (data == 30)
System.out.println("OK: stack pop data is 30");
else
System.out.println("Error: stack pop data is " + data);
System.out.println("Clear stack");
s.clear();
System.out.println("Print stack " + s);
}
} // end Stack
OUTPUT:
*******************************************************
Sample Expected output:
OK: stack is empty
Push 3 data: 10, 30, 50
Print stack [50,30,10,]
OK: stack size is 3
OK: peek stack top is 50
OK: stack is not empty
Pop 2 data: 50, 30
Print stack [30,10,]
Print stack [10,]
OK: stack pop data is 30
Clear stack
Print stack []
*******************************************************
Your Test output:
Error: stack is not empty
Push 3 data: 10, 30, 50
Print stack 50,30,10,
OK: stack size is 3
OK: peek stack top is 50
OK: stack is not empty
Pop 2 data: 50, 30
Print stack 30,10,
Print stack 10,
OK: stack pop data is 30
Clear stack
Print stack
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.