public boolean replace(int pos, K pk) {
//    	_start = System.currentTimeMillis();

        SimpleListNode<K> node = new SimpleListNode<K>(pk);

        // Check valid position
        if((pos < 0) || (pos > this.length)) {
//        	_end = System.currentTimeMillis();
//        	System.out.println("Insert lasted:  " + getExecuteTime());
            return false;
        }

        // Search position
        SimpleListNode<K> previous = null;
        SimpleListNode<K> current = this.head;
        for(int i = 0; i != pos; i++) {
            previous = current;
            try{
            	current = current.getNext();
            }catch(NullPointerException e){
            	current = null;
            }
        }

        // Insert node        
        try{
        	node.setNext(current.getNext());
        }catch(NullPointerException e){
        	node.setNext(null);
        }
        if(previous != null) {
        	previous.setNext(null);
            previous.setNext(node);
        }

        // Check head
        if(current == this.head) {
            this.head = node;
        }
        // Check tail
        if(previous == this.tail) {
            this.tail = node;
        }
//        _end = System.currentTimeMillis();
//        System.out.println("Insert lasted:  " + getExecuteTime());
        return true;
    }