1.
push adds node on top of the stack2.
pop removes the top most node from the stack3.
top returns the top most node of the stack without modifying it4.
isEmpty checks if the stack does not have any elementsThe details of the
StackNode class package com.ds.programs;
class StackNode<E>
{
E data;
StackNode<E> next;
}
The
Stack class with push, pop, top and isEmpty implementationpackage com.ds.programs;
import java.util.NoSuchElementException;
public class Stack<E>
{
private StackNode<E> m_head;
public Stack () {
m_head = null;
}
public void push (E n) {
StackNode<E> tmp = getNewNode();
tmp.data = n;
StackNode<E> oHead = m_head;
m_head = tmp;
m_head.next = oHead;
}
public void pop () {
if (isEmpty()) throw new NoSuchElementException("Stack is Empty");
m_head = m_head.next;
}
public E top () {
return m_head.data;
}
public boolean isEmpty () {
return m_head == null;
}
private StackNode<E> getNewNode () {
return new StackNode<E>();
}
}
The
StackTest junit class for testing the above stack implementationpackage com.ds.programs;
import junit.framework.Assert;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
public class StackTest
{
private String[] elems = new String[] { "A", "B", "C" };
private Stack<String> stack = new Stack<String>();
@Before
public void setup () {
for (String str : elems)
{
stack.push(str);
}
}
@After
public void destroy () {
while (stack.isEmpty() == false)
{
stack.pop();
}
}
@Test
public void testTop () {
Assert.assertEquals(stack.top(), "C");
}
@Test
public void testPush () {
Assert.assertEquals(stack.top(), "C");
stack.pop();
Assert.assertEquals(stack.top(), "B");
stack.pop();
Assert.assertEquals(stack.top(), "A");
}
}
No comments:
Post a Comment