我即将开始考试并且正在努力解决这个问题,希望有人可以帮忙。
提供实现接口的完整Java类
interface StringQueue
{ boolean isEmpty();
void add(String c);
String front();
void removeFront();
}
该类应提供标准先进先出队列的实现。队列中的字符应存储在使用QueueCell类型的对象构造的单链表中;你必须把这个类写成一个内部类。 (不得使用Collections Framework中的LinkedList类)。当应用于空队列时,front和removeFront方法应抛出QueueException类型的异常;您可以假设已经编写了QueueException类。
提前致谢
答案 0 :(得分:1)
轻松尝试
实施:
private LinkedList<E> list = new LinkedList<E>();
public void add(E item) {
list.addLast(item);
}
public E removeFront() {
return list.poll();
}
public boolean isEmpty() {
return !list.isEmpty();
}
public int size() {
return list.size();
}
public void addItems(GenQueue<? extends E> q) {
while (q.hasItems()) list.addLast(q.dequeue());
}
答案 1 :(得分:0)
我建议你看看我的实现并尝试编写自己的实现。否则,如果你只是复制并粘贴它,它对你没用。
<强>接口强>:
public interface StringQueue {
boolean isEmpty();
void add(String c);
String front();
void removeFront();
}
<强>实施强>
public class StringQueueImpl implements StringQueue {
private QueueCell head;
private int size = 0;
@Override
public boolean isEmpty() {
return false;
}
@Override
public void add(String c) {
if(head == null){
head = new QueueCell(c);
} else {
QueueCell current = head;
while(current != null){
if(current.next == null){
current.next = new QueueCell(c);
break;
} else {
current = head.next;
}
}
}
size++;
}
@Override
public String front() throws QueueException {
if(size == 0 || head == null){
throw new QueueException();
}
return head.value;
}
@Override
public void removeFront() throws QueueException {
if(size == 0 || head == null){
throw new QueueException();
}
if(head.next != null){
head = head.next;
} else { // if only 1 element is in the queue
head = null;
}
size--;
}
private static class QueueCell {
private QueueCell next;
private String value;
QueueCell(String s){
value = s;
}
}
public static class QueueException extends RuntimeException {
public QueueException(){
super("Queue is empty");
}
}
}