배열을 활용하여 선입선출 형식인 큐를 구현 해보자
멤버변수에는 항상 첫부분 0을 가르킬 front와
큐의 사용자 지정 크기를 담을 capacity
그리고 요소의 갯수를 담을 size를 선언한다
앞서 배열로 만든 Stack 형식과 똑같이 인데스 번호 0부터 넣는 메소드를 만들어주자
다음은 앞에 있는 데이터를 꺼내서 item이라는 변수에 저장하여 값을 확인하는 메소드를 만들어보자
먼저 item에 array[0]의 데이터의 값을 저장한다음
반복문을 통해 array[0]에있는데이터가 array[1]에 있는 데이터값을 가지고 다음 반복때에 array[1]에있는
데이터가 array[2]에있는 데이터를 가지게하여 뒤에있는 인덱스번호를 앞으로 한칸씩 땡겨오는식으로 설계
하도록 하자 마지막 요소에는 0을 넣어서 앞으로 한칸씩 땡겨지는것을 완성할수있다
반환값은 item을 리턴하도록 하자
array[0](맨앞에있는 요소)를 출력해주는 peak 메소드도 만들어보았다
이제 기능들이 제대로 구현되는지 테스트 해보자
우선 큐의 배열 크기를 3으로 지정 해준뒤
100 , 200 , 300 , 400 을 차례대로 넣어주자
400을 넣을때 메모리공간이 가득 찼다는 메세지가 출력이 된다
크기가 3인 배열에 요소를 4개를 넣으려고 해서 그런것이다
이번에는 맨앞에 요소를 꺼낸뒤 맨앞의 번호를 출력해보자
맨 처음 요소 100이 꺼내지고
200이 제일 앞에 들어온것을 확인할수가있다.
이번에는 데이터를 넣는 enqueue 메소드를 수정하여 순환구조로 데이터가 계속 들어가게 만들어보자
데이터를 넣을떄마다 인덱스 번호가 계속 순환되게 하려면 어떻게 코드를 작성해야할까?
인덱스 번호를 0부터 끝번호까지 돌린후 다시 0으로 돌아오도록 설계하면 된다
%를 활용해서 코드를 구현해보자
rear값에 1을 증가시켜서 배열의 크기로 나눠주고 그 나머지값을 다시 rear에 담아주는 방식을
반복한다면 결국 나머지가 1씩 증가하는 코드가 작성이 된다 즉 rear의 값은 1씩 증가하지만
나머지이기떄문에 배열의 크기보다 커지게 된다면 다시 0으로 돌아오게 된다 한번 코드를
테스트 해보자
큐의 배열의 크기보다 많은 4개의 값을 넣어보고 출력해보자
처음에 넣은 100대신 4번째로 들어온 400이 들어온것을 확인할수있다
'Java' 카테고리의 다른 글
List 인터페이스 (2) | 2024.05.24 |
---|---|
LinkedList (0) | 2024.05.22 |
배열을 활용하여 객체 만들기 (0) | 2024.05.21 |
자료구조 (1) | 2024.05.07 |
multi-threading (0) | 2024.05.06 |