Я работаю над этим проектом, чтобы решить лабиринт, используя очередь в Java.Поскольку я работал над основным классом, я получаю ошибки именно в методах enqueue и dequeue.
public void mazeSolver(int startRow, int startCol, int endRow, int endCol) {
Location location = new Location();
location.setPosition(startRow, startCol);
LocationQueue queue = new LocationQueue();
queue.enqueue(location);
while (!queue.isEmpty()) {
location = queue.dequeue();
mazeArray[location.getRow()][location.getColumn()] = '.';
if ((location.getRow() == endRow && location.getColumn() == endCol)) {
break;
}
if (location.getRow() + 1 < Rows) {
if (mazeArray[location.getRow() + 1][location.getColumn()] == ' ') {
Location newLocation = new Location();
newLocation.setPosition(location.getRow() + 1, location.getColumn());
queue.enqueue(newLocation);
}
}
if (location.getRow() - 1 >= 0) {
if (mazeArray[location.getRow() - 1][location.getColumn()] == ' ') {
Location newLocation = new Location();
newLocation.setPosition(location.getRow() - 1, location.getColumn());
queue.enqueue(newLocation);
}
}
if (location.getColumn() + 1 < Columns) {
if (mazeArray[location.getRow()][location.getColumn() + 1] == ' ') {
Location newLocation = new Location();
newLocation.setPosition(location.getRow(), location.getColumn() + 1);
queue.enqueue(newLocation);
}
}
if (location.getColumn() - 1 > 0) {
if (mazeArray[location.getRow()][location.getColumn() - 1] == ' ') {
Location newLocation = new Location();
newLocation.setPosition(location.getRow(), location.getColumn() - 1);
queue.enqueue(newLocation);
}
}
}
}
У меня есть класс LocationQueue, который включает методы enqueue и dequeue:
public class LocationQueue<Location> {
LinkList locationList = new LinkList();
public void enqueue(int iData) {
locationList.addLast(iData);
}
public Node dequeue() {
if (!locationList.isEmpty()) {
return locationList.deleteFirst();
} else {
return null;
}
}
public void displayQueue() {
locationList.displayList();
System.out.println();
}
public boolean isEmpty() {
return locationList.isEmpty();
}
}
И это мой класс Node:
public class Node {
int iData;
Node next;
public Node (int values) {
iData = values;
next = null;
}
public void displayNode(){
System.out.print(iData + " ");
}
}
Эта проблема можетбыть простым решением, и я не понимаю, где я делаю это неправильно.Так как в сообщении об ошибке указано «Метод enqueue (int) в типе LocationQueue не применим для аргументов (Location)» и «Несоответствие типов: невозможно преобразовать из узла в местоположение».Я просто не уверен, какой раздел кода мне нужно изменить.Мое местоположение и класс LinkList могут быть неуместны для публикации в этом выпуске, однако, если вы хотели бы видеть оба класса, я не против опубликовать их.
Примечание. Если мой формат кода выглядит несколько не так, я приношу свои извинения.Я все еще привыкаю к форматированию кода в StackOverflow.