숙제를위한 배열을 사용하여 큐 ADT를 구현하려고합니다. 연결된 목록을 사용할 것입니다.하지만 교수는 우리가 배우기를 원합니다. 새로운 것 또는 뭔가 XD). 어쨌든, 큐의 끝 부분에 요소를 추가하는 메서드를 만들고 있는데,이 동일한 메서드는 범위를 벗어나는 경우 새로운 크기 조정 배열을 만들어야합니다.이 메서드는 제가 고민하고있는 메서드입니다 (enqueue() 메소드). 여기 내 코드는 다음과 같습니다.배열을 사용하여 큐를 구현하십시오. - Java
import java.util.Arrays;
public class Queue<T> implements QueueInterface<T> {
private T[] a;
private int sz;
public Queue(int capacity) {
sz = 0;
@SuppressWarnings("unchecked")
T[] tempQueue = (T[])new Object[capacity];
a= tempQueue;
}
public void enqueue(T newEntry) {
try {
for (int i=0; i<a.length; i++) {
if (a[i] == null) {
a[i] = newEntry;
break;
}
}
sz++;
}
catch (ArrayIndexOutOfBoundsException e) {
@SuppressWarnings("unchecked")
T[] tempQueue = (T[])new Object[a.length*+5];
a= tempQueue;
for (int i=0; i<a.length; i++) {
if (a[i] == null) {
a[i] = newEntry;
break;
}
}
}
}
public T dequeue() {
T result = a[0];
a[0] = null;
for (int i=1; i<a.length;i++) {
a[i-1] = a[i];
}
sz--;
return result;
}
public T getFront() {
return a[0];
}
public boolean isEmpty() {
for (int i=0; i<a.length; i++) {
if (a[i] != null) {
return false;
}
}
return true;
}
public void clear() {
for (int i=0; i<a.length; i++) {
a[i] = null;
sz--;
}
}
@Override
public String toString() {
return "Queue [a=" + Arrays.toString(a) + ", sz=" + sz + "]";
}
}
여러분 모두에게 감사드립니다 !!!
하는 일반적인 방법 당신이 뭔가를 할 수있는 쉬운 방법을 평가하는 얻기를 위해 당신이 그것을 할 것입니다 힘든 길 먼저. =) –
귀하의 구체적인 문제는 무엇입니까 - 우리는 결함에 대한 귀하의 코드를 연구하는 것보다 더 할 일이 있습니다.배열 대기열의 경우 배열 자체와 머리 (대기열에서 대기열에서 제외) 및 꼬리 (대기열에 대기열에 넣기) 색인 값이 필요하다는 점을 기억하십시오. 배열의 끝에 도달하면 꼬리 값이 머리보다 커질 수 있으므로 다시 "줄 바꿈"합니다. –
알다시피, 나는 특히 도움을 청할 때이 사이트에서 매우 예의를 가지려고 노력한다. 그리고 내가 충분히 구체적이지 않다면 미안하다. (나는 여전히 이것에 매달려있다.) 솔직히 말하면, 할 일이 있다면 할 일이 있다면 할 수 있습니다. 나는 당신에게 더 많은 세부 사항을 묻는 데 아무런 문제가 없지만 적어도 그것에 대해 예의가 될 수있다. 어쨌든 당신이 대답을 주셔서 감사합니다 – salxander