Q:

Ошибка в методе toString

Пишу свой список, не могу переопределить список. Вот мой метод
public String toString(){
   Konj temp = head; return ("[ ");
    while (temp.next != null) {
       return(" "+temp.values);
        temp = temp.next;
    }
    return(" ]");
}

Почему возникает ошибка  unreachable statement?

A:

Потому что в первой же строке вы возвращаете значение "[ " из этого метода и программа возвращается к вызывающему этот код методу.
Вы сначала всё конкатенируйте и только потом делайте return:
{
   String result = "";
   Konj temp = head; 
   result += "[ ";
   while (temp.next != null) 
   {
      result += " " + temp.values;
      temp = temp.next;
   }
   result += " ]";
   return result;
}

UPDATED: как подсказывает @VladD, можно использовать класс StringBuilder, дабы увеличить производительность этого метода. Делаем это так:
{
   StringBuilder result = new StringBuilder("");
   Konj temp = head; 
   result.append("[");
   while (temp.next != null) 
   {
      result.append(" ").append(temp.values);
      temp = temp.next;
   }
   result.append(" ").append("]");
   return result;
}

