[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/rcarrillodev/Java/master/DataStructures/Stacks/NodeStack.java [Back]  [Original]

/**
* Implementation of a stack using nodes.
* Unlimited size, no arraylist.
*
* @author Kyler Smith, 2017
*/


public class NodeStack {

    /**
    * Entry point for the program.
    */
    public static void main(String[] args) {
        NodeStack Stack = new NodeStack();

        Stack.push(3);
        Stack.push(4);
        Stack.push(5);
        System.out.println("Testing :");
        Stack.print();  			// prints : 5 4 3

        Integer x = Stack.pop(); 	// x = 5
        Stack.push(1);
        Stack.push(8);
        Integer y = Stack.peek();	// y = 8
        System.out.println("Testing :");
        Stack.print();				// prints : 8 1 4 3

        System.out.println("Testing :");
        System.out.println("x : " + x);
        System.out.println("y : " + y);
    }

    /**
    * Information each node should contain.
    * @value data : information of the value in the node
    * @value head : the head of the stack
    * @value next : the next value from this node
    * @value previous : the last value from this node
    * @value size : size of the stack
    */
    private Item data;
    private static NodeStack head;
    private NodeStack next;
    private NodeStack previous;
    private static int size = 0;


    /**
    * Constructors for the NodeStack.
    */
    public NodeStack() {
	}

    private NodeStack(Item item) {
        this.data = item;
    }

    /**
    * Put a value onto the stack.
    *
    * @param item : value to be put on the stack.
    */
    public void push(Item item) {

    	NodeStack newNs = new NodeStack(item);

        if(this.isEmpty()) {
        	NodeStack.setHead(new NodeStack(item));
        	newNs.setNext(null);
        	newNs.setPrevious(null);
        } else {
        	newNs.setPrevious(NodeStack.head);
        	NodeStack.head.setNext(newNs);
        	NodeStack.head = newNs;
        }

        NodeStack.setSize(NodeStack.getSize() + 1);
    }

    /**
    * Value to be taken off the stack.
    *
    * @return item : value that is returned.
    */
    public Item pop() {

    	Item item = (Item) NodeStack.head.getData();

    	NodeStack.head = NodeStack.head.getPrevious();
    	NodeStack.head.setNext(null);

    	NodeStack.setSize(NodeStack.getSize() - 1);

        return item;
    }

    /**
    * Value that is next to be taken off the stack.
    *
    * @return item : the next value that would be popped off the stack.
    */
    public Item peek() {
        return (Item) NodeStack.head.getData();
    }

    /**
    * If the stack is empty or there is a value in.
    *
    * @return boolean : whether or not the stack has anything in it.
    */
    public boolean isEmpty() {
        return NodeStack.getSize() == 0;
    }

    /**
    * Returns the size of the stack.
    *
    * @return int : number of values in the stack.
    */
    public int size() {
        return NodeStack.getSize();
    }

    /**
    * Print the contents of the stack in the following format.
    *
    * x  ns) {
    	NodeStack.head = ns;
    }

    private NodeStack getNext() {
		return next;
	}

    private void setNext(NodeStack next) {
		this.next = next;
	}

    private NodeStack getPrevious() {
		return previous;
	}

    private void setPrevious(NodeStack previous) {
		this.previous = previous;
	}

    private static int getSize() {
		return size;
	}

    private static void setSize(int size) {
		NodeStack.size = size;
	}

    private Item getData() {
		return this.data;
	}

    private void setData(Item item) {
		this.data = item;
	}
}

Web Proxy Viewer  |  New URL  |  Original Page