public class MyLinkedList<E> { private Node first; private int size; public int size(){ return size; } @Override public String toString() { if(size == 0){ return "[]"; }else{ StringBuilder sb = new StringBuilder("["); Node current = first; while (current != null){ sb.append(current.value).append(","); current = current.next; } sb.replace(sb.length() - 1, sb.length(), "]"); return sb.toString(); } } public static void main(String[] args) { MyLinkedList list = new MyLinkedList(); list.addFirst("python").addFirst("java").addFirst("hello").addFirst("php"); System.out.println(list); list.removeFirst(); System.out.println(list); System.out.println(list.contains("python")); } public E removeFirst(){ if(size == 0){ return null; }else { Node<E> temp = first; first = temp.next; size--; return temp.value; } } public boolean contains(E e){ Node current = first; while(current != null){ if(current.value == e ){ return true; } current = current.next; } return false; } public MyLinkedList addFirst(E e){ Node newNode = new Node(e); newNode.next = first; first = newNode; size++; return this; } private static class Node<E>{ private E value; private Node next; Node(E value){ this.value = value; } @Override public String toString() { return value == null?"null":value+""; } } }