《算法4》1.3.14习题详解
编写一个类ResizingArrayQueueOfStrings
public class ResizingArrayQueueOfStrings implements Iterable<String>
{
private String[] a = new String[1];
private int N = 0;
public void enqueue(String item)
{
// 将元素添加到队列尾部
if (N == a.length)
{
this.resize(a.length * 2);
}
a[N++] = item;
}
public String dequeue()
{
// 从队列头部删除元素
String item = a[0];
for (int i = 1; i < N; i++)
{
a[i-1] = a[i];
}
N--;
if (N > 0 && N == a.length / 4)
{
this.resize(a.length / 2);
}
return item;
}
private void resize(int max)
{
// 将队列移动到一个大小为max的新数组
String[] temp = new String[max];
for (int i = 0; i < N; i++)
{
temp[i] = a[i];
}
this.a = temp;
}
public boolean isEmpty()
{
return N == 0;
}
public int size()
{
return N;
}
private class ListIterator implements Iterator<String>
{
private int i = 0;
@Override
public boolean hasNext()
{
return i < N;
}
@Override
public String next()
{
String item = a[i++];
return item;
}
}
@Override
public Iterator<String> iterator()
{
return new ListIterator();
}
}