Задача Ханойская башня.

 
 
 
Сообщения:1
Попалась такая задача. Наверняка многим она знакома, но если нет - это головоломка "Ханойская башня" В данном примере по утверждению автора решение состоит в том что бы правильно указать аргументы.
Автором реализован свой вариант класса Stack где с помощью (как я понимаю) вспомогательного класса Node есть проверка не кладем ли мы бОльший элемент на меньший.

Вопрос вот в чем: Правильно ли я понимаю что автор допустил ошибку? Так как невозможно положить в стек даже первый элемент не поймав nullPointerException?

public class Hanoi{
public static void main(String[] args) {
// Стеки имитируют колышки
Stack from = new Stack();
Stack help = new Stack();
Stack to = new Stack();
from.push(3);
from.push(2);
from.push(1);
exchange(from, help, to, 3);
}


// Метод переставляет элементы
private static void exchange(Stack from, Stack help, Stack to, int count) {
if(count > 0) {
// exchange(?,?,?,?);
int biggest = from.pop();
to.push(biggest);
// exchange(?,?,?,?);
}
}

private static class Stack{
private Node top;

void push(int value) {
if(value > top.value){
throw new IllegalArgumentException();
}
this.top = new Node(value, top);
}

int pop() {
int result = top.value;
top = top.next;
return result;
}
}


private static class Node {
final int value;
final Node next;

private Node(int value, Node next) {
this.value = value;
this.next = next;
}
}
}
 
 
Сообщения:75
Всё верно, будет NullPointerException
 
Модераторы:frymock
Сейчас эту тему просматривают:Нет