Hi here the question the interviewer asked me-
package jp.co.worksap.intern;
/**
*The Stack class represents a last-in-first-out(LIFO) stack of objects
*And this class can look at the object which has the highest (lowest or so) value.
*So every object onto the stack must be comparable to each other.
*@param<E.
*/
public interface ISortableStack<E extends Comparable<E>>{
/**
*Pushes an item onto the top of this stack.
*If the Element e is null, throws NullPointerException.
*
*
@param e
*@throws NullPointerException
*/
public void push(E e);
/**
*Removes the object at the top of this stack and returns that object as the value of this function.
*If the stack is empty, throws EmptyStackException.
*@return
*@throws EmptyStackException
*/
public E pop();
/**
*Locks at the object which has the middle value among the all objects without removing it from the stack.
*Returns the object which has the value of following order <code>(size()/2)+1</code>
*<pre>
*e.g.
*When the stack has the following values (1, 2, 5, 4, 2, 6)
*this method returns 4 and doesn't remove the object.
*</pre>
*
*If the stack is empty, throws EmptyStackException.
*@return
*@throws EmptyStackException
*/
public E peekMidElement();
/**
*Looks at the object which has the highest value among the all objects without removing it from the stack.
*Returns the object which has the value of the following order <code>size()</code>
*<pre>
*e.g.
*When the stack has the following values (1,2,5,4,2,6)
*this method returns 6 and doesn't remove that object
*</pre>
*
*If the stack is empty, throws EmptyStackException.
*@return
*@throws EmptyStackException
*/
public E peekHighestElement();
/**
*Looks at the object which has the lowest value among the all objects without removing it from the stack.
*Returns the object which has the value of the following order <code>1</code>
*<pre>
*e.g.
*When the stack has the following values (1,2,5,4,2,6)
*this method returns 1 and doesn't remove the object.
*</pre>
*
*If the stack is empty, throws EmptyStackException.
*@return
*@throws EmptyStackException
*/
public E peekLowestElement();
/**
*Returns the number of objects in this stack.
*@return
*/
public int size();
}
Now i have implemented the Interface in Eclipse as per the statement shown below code
public class MyStackClass<E extends Comparable<E>> implements ISortableStack<E>{
private int A;
private Node first;
private class Node{
private E e;
private Node next;
}
public MyStackClass() {
first = null;
A = 0;
}
private ArrayList<E> listOne = new ArrayList<E>();
public void push(E e) {
// TODO Auto-generated method stub
Node oldfirst = first;
first = new Node();
first.e = e;
first.next = oldfirst;
A++;
}
@Override
public E pop() {
// TODO Auto-generated method stub
if (isEmpty()) throw new RuntimeException("Stack underflow");
E e = first.e; // save e to return
first = first.next; // delete first node
A--;
return e; // return the saved e
}
@Override
public E peekMidElement() {
// TODO Auto-generated method stub
if(listOne.size() <= 0){
throw new EmptyStackException();
}
return listOne.get(listOne.size()/2);
}
@Override
public E peekHighestElement() {
// TODO Auto-generated method stub
if(listOne.size() <= 0){
throw new EmptyStackException();
}
return listOne.get(listOne.size() - 1);
}
@Override
public E peekLowestElement() {
// TODO Auto-generated method stub
if(listOne.size() <= 0){
throw new EmptyStackException();
}
return listOne.get(0);
}
@Override
public int size() {
// TODO Auto-generated method stub
return A;
}
public boolean isEmpty() {
return first == null;
}
}
Now when i call main method the ISortableStack array list is unable to instantiate shown below.It throws error at ISortableStack as:Cannot make a reference to a non static type . and is not able to instatiate the ISORTABLESTACK.
import java.io.*;
public class DisplayStack {
E ch;
public static void main(String[] args) {
// TODO Auto-generated method stub
ISortableStack<Character> s = new ISortableStack<Character>(); //Cannot instantiate ISORTABLESTACK
char character;
DisplayStack demo = new DisplayStack();
while ((character = (char)System.in.read())!= '\n') //Cannot make reference to a non static type
if (!s.full())
s.push(character);
while (!s.empty())
System.out.print(s.pop());
System.out.println();
}
}
Please help me to get this code work.
Please help me in this one...