큐 구현(설명 x)
- 프로그래밍 언어/자바
- 2020. 12. 8. 19:45
반응형
반응형
배열로 큐 구현하기.
public class QueueArr {
private int[] arr;
private int size;
private int cnt;
public QueueArr(int size) {
this.size = size;
arr = new int[size+100];
}
public void offer(int data) {
arr[cnt] = data;
cnt = cnt + 1;
}
public int poll() {
if (cnt <= 0) {
throw new IllegalArgumentException("큐에 아무것도 존재하지 않습니다.");
}
int value = arr[0];
for(int i = 0;i<cnt;i++) {
arr[i] = arr[i+1];
}
cnt = cnt - 1;
return value;
}
}
테스트 코드
class QueueArrTest {
QueueArr queue;
@BeforeEach
void init() {
queue = new QueueArr(10);
}
@Test
void test() {
queue.offer(2);
queue.offer(3);
queue.offer(4);
queue.offer(2);
assertEquals(queue.poll(),2);
assertEquals(queue.poll(),3);
assertEquals(queue.poll(),4);
assertEquals(queue.poll(),2);
assertThrows(IllegalArgumentException.class,()->queue.poll());
}
}
링크드 리스트로 큐 구현하기.
public class QueueLinked {
private LinkedList linked;
public QueueLinked() {
linked = new LinkedList();
}
public void offer(int data) {
linked.addLast(data);
}
public int poll() {
return linked.removeFirst();
}
}
링크드 리스트는 다음 링크에서 코드 확인 가능
테스트 코드:
class QueueLinkedTest {
QueueLinked queue;
@BeforeEach
void init() {
queue = new QueueLinked();
}
@Test
void offer() {
queue.offer(2);
queue.offer(3);
queue.offer(5);
queue.offer(7);
queue.offer(10);
assertArrayEquals(queue.test(),new int[]{2,3,5,7,10});
}
@Test
void poll() {
queue.offer(2);
queue.offer(3);
queue.offer(5);
queue.offer(7);
queue.offer(10);
assertEquals(queue.poll(),2);
assertEquals(queue.poll(),3);
assertEquals(queue.poll(),5);
assertEquals(queue.poll(),7);
assertEquals(queue.poll(),10);
assertThrows(IllegalArgumentException.class,()->queue.poll());
}
}
반응형
'프로그래밍 언어 > 자바' 카테고리의 다른 글
상속 (1) | 2020.12.24 |
---|---|
클래스 (0) | 2020.12.15 |
스택 구현(설명x) (0) | 2020.12.07 |
Live-Study 대시 보드 만들기. (0) | 2020.12.06 |
Junit5 (0) | 2020.12.04 |