迷宫问题:
- 用队列实现在一个数组组成的迷宫中寻找路径到出口
实现的思路:
- 使用队列实现,一种广度搜索
- 队列选用循环单链表为基础实现队列ADT
- 前进方向判断
- 遇到死路要回退, 链表的抽象节点类不方便满足需求,新建position节点类(新增prev域指向前驱)
1. 循环单链表为基础的队列
- CircSinglyLinkedList.java
package indi.yyh.datastru.project2.CircleLink;
import indi.yyh.datastru.project2.Node;
// @author yyh
//循环单链表
public class CircSinglyLinkedList<T> extends Object {
// 头结点
public Node<T> head; //next域和data,自个写,就不贴代码了
public int length = 0;
// 构造方法
public CircSinglyLinkedList() {
this.head = new Node<T>();
this.head.next = this.head;
}
public CircSinglyLinkedList(T[] values) {
this();
this.length = values.length;
Node<T> rear = this.head;
for (int i = 0; i < values.length; i++) {
rear.next = new Node<T>(values[i], null);
rear = rear.next;
}
rear.next = this.head;
}
//判空
public boolean isEmpty(){
return this.length== 0;
}
public int insert(int i, T x) {
int count = 0;
Node<T> q = new Node<T>(x, null)