数据结构与算法(java)-- 复习题-3

更新时间: 试题数量: 购买人数: 提供作者:

有效期: 个月

章节介绍: 共有个章节

收藏
搜索
题库预览
【算法补充题】链队的出/入队 //队列数据类型,其中T表示队列中数据的类型 public interface Queue<T> { public void enqueue(T t); //元素入队,在队尾插入元素T public T dequeue(); //元素出队,队头元素出队 public T peek(); //取队头元素值,但队头元素不出队 public boolean isEmpty(); //判断队列是否为空 } //链栈结点 public class LinkedNode<T> { private T data; private LinkedNode<T> next; //构造方法 public LinkedNode() { } public LinkedNode(T data) { this.data = data; } public LinkedNode(T data, LinkedNode<T> next) { this.data = data; this.next = next; } //setter和getter方法 public T getData() { return data; } public void setData(T data) { this.data = data; } public LinkedNode<T> getNext() { return next; } public void setNext(LinkedNode<T> next) { this.next = next; } } //链式队列类 public class LinkedQueue<T> implements Queue<T> { private LinkedNode<T> front, rear; // 表示队头,队尾指针 // 队列初始化 public LinkedQueue() { front = rear = new LinkedNode<T>(); // 初始空队列,队头和队尾指向一个空的头结点 } // 元素入队 public void enqueue(T t) { // 先构造新结点,再将新元素入队,在队尾处插入新结点,再移动队尾指针指向新结点 LinkedNode<T> node = new LinkedNode<T>(t, null); ______ 1 ______ ; //新结点插入队尾 rear = node; //移动队尾指针 } // 元素出队 public T dequeue() { // 先获取队头元素,再移动队头指针指向下一个结点,若队列只有一个元素,出队后队列为空,则移动队尾指针指向头结点 if (isEmpty()) throw new RuntimeException("队列为空,没有元素可出队"); LinkedNode<T> node = front.getNext(); //保存要出队的队头结点 front.setNext(node.getNext()); //队头指针指向node的后继结点 if (node.getNext() == null) //若队列中只有一个元素 ______ 2 ______ ; //元素出队后,队列为空,队尾和队头指针都指向头结点 return node.getData(); } }
1