package com.anuragkapur.pie.linkedlists;
/**
* @author anuragkapur
*/
public class LinkedListStackImplementation<E> implements StackImplementation<E> {
private Node head;
private int size;
@Override
public void push(E element) {
Node node = new Node();
node.data = element;
node.next = head;
head = node;
size ++;
}
@Override
public E pop() {
if (head == null) {
return null;
}
E popped = head.data;
head = head.next;
size --;
return popped;
}
@Override
public E peek() {
return head.data;
}
@Override
public int size() {
return size;
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
Node current = head;
if (current != null) {
builder.append(current.data);
}
current = current.next;
while (current != null) {
builder.append(",");
builder.append(current.data);
current = current.next;
}
return builder.toString();
}
private class Node {
E data;
Node next;
}
}