728x90
★ MyQueue 직접 구현하기
- 조건
- 1. 행동
- boolean add(String value)
- 값을 순차적으로 추가한다.
- value: 추가할 요소의 값
- return: 성공 유무
- String poll()
- 값을 순차적으로 가져온다.
- return: 가져올 요소의 값
- int size()
- 요소의 개수를 반환한다.
- return: 요소의 개수
- String peek()
- 이번에 가져올 값을 확인한다.
- value: 값 반환
- void clear()
- 배열의 모든 요소를 삭제한다.
- void trimToSize()
- 배열안의 요소의 개수만큼 배열의 길이를 줄인다.
- boolean add(String value)
- 2. 소스코드
package com.test.question;
public class MyQueue {
private String[] list;
private int index;
public MyQueue() {
this.list = new String[4];
this.index = 0;
}
public boolean add(String value) {
//인자값을 배열에 차례대로 넣기 > Append
//검사 > 방이 모자란지? > 배열 2배 확장(깊은 복사)
if(checkList()) {
doubleList();
}
this.list[this.index] = value;
this.index++;
return true;
}
//index의 길이가 현재 list의 길이와 같은지 즉, 방이 꽉찼는지 검사
public boolean checkList() {
if(this.index == this.list.length) {
return true;
}
return false;
}
//배열의 길이가 꽉 찼다면, 배열의 길이를 2배로 늘려주는 연산
public void doubleList() {
String[] temp = new String[this.list.length*2];
for(int i=0; i<this.list.length; i++) {
temp[i] = this.list[i];
}
this.list = temp;
}
//값을 순차적으로 가져오고 제거
public String poll() {
String temp = list[0];
if(this.index > 0) {
for(int i=0; i<this.list.length-2; i++) {
this.list[i] = this.list[i+1];
}
this.index--;
return temp;
}else {
return "null";
}
}
//해당 요소의 개수를 반환
public int size() {
return index;
}
//이번에 가져올 값을 가져옴.
public String peek() {
return this.list[0];
}
//모든 요소를 제거
public void clear() {
for(int i=0; i<this.index; i++) {
this.list[i] = null;
}
this.index = 0;
}
//해당 요소의 사이즈에 맞추어 배열의 길이를 축소
public void trimToSize() {
String [] temp = new String [this.index];
for(int i=0; i<index; i++) {
temp[i] = list[i];
}
this.list = temp;
}
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(String.format("index : %d\n", this.index));
sb.append(String.format("length : %d\n", this.list.length));
for(int i=0; i<this.list.length; i++) {
sb.append(String.format("\t%d : %s\n",i , list[i]));
}
return sb.toString();
}
}
package com.test.question;
public class Q0105 {
public static void main(String[] args) {
//배열 생성
MyQueue queue = new MyQueue();
//추가
System.out.println("-항목 추가-");
queue.add("빨강");
queue.add("노랑");
queue.add("파랑");
queue.add("주황");
queue.add("검정");
System.out.println();
//읽기
System.out.println("-읽기-");
System.out.println(queue.poll());
System.out.println(queue.poll());
System.out.println(queue.poll());
System.out.println();
//개수
System.out.println("-개수-");
System.out.println(queue.size());
System.out.println();
//확인
System.out.println("-확인-");
System.out.println(queue.peek());
System.out.println(queue.peek());
System.out.println(queue.size());
System.out.println();
//크기 조절
System.out.println("-크기 조절-");
queue.trimToSize();
System.out.println();
//초기화
System.out.println("-초기화-");
queue.clear();
System.out.println(queue.size());
System.out.println();
}
}
- 실행결과
★ MyStack 직접 구현하기
- 조건
- 1. 행동
- boolean push(String value)
- 값을 순차적으로 추가한다.
- value: 추가할 요소의 값
- return: 성공 유무
- String pop()
- 값을 순차적으로 가져온다.
- return: 가져올 요소의 값
- int size()
- 요소의 개수를 반환한다.
- return: 요소의 개수
- String peek()
- 이번에 가져올 값을 확인한다.
- value: 값 반환
- void clear()
- 배열의 모든 요소를 삭제한다.
- void trimToSize()
- 배열안의 요소의 개수만큼 배열의 길이를 줄인다.
- boolean push(String value)
- 2. 소스코드
package com.test.question;
public class MyStack {
private String [] list;
private int index;
public MyStack() {
this.list = new String[4];
this.index = 0;
}
//값을 순차적으로 추가
public boolean push(String value) {
//인자값을 배열에 차례대로 넣기 > Append
//검사 > 방이 모자란지? > 배열 2배 확장(깊은 복사)
if(checkList()) {
doubleList();
}
this.list[this.index] = value;
this.index++;
return true;
}
//index의 길이가 현재 list의 길이와 같은지 즉, 방이 꽉찼는지 검사
public boolean checkList() {
if(this.index == this.list.length) {
return true;
}
return false;
}
//배열의 길이가 꽉 찼다면, 배열의 길이를 2배로 늘려주는 연산
public void doubleList() {
String[] temp = new String[this.list.length*2];
for(int i=0; i<this.list.length; i++) {
temp[i] = this.list[i];
}
this.list = temp;
}
//값을 순차적으로 가져온다. 가져온 값은 제거
public String pop() {
String temp = this.list[index-1];
this.list[index-1] = null;
index--;
return temp;
}
//요소의 개수를 반환
public int size() {
return this.index;
}
//이번에 가져올 값을 확인한다.
public String peek() {
return this.list[index-1];
}
//배열의 모든 요소를 삭제한다.
public void clear() {
for(int i=0; i<this.index; i++) {
this.list[i] = null;
}
this.index = 0;
}
//배열안의 요소의 개수만큼 배열의 길이를 줄인다.
public void trimToSize() {
String [] temp = new String [this.index];
for(int i=0; i<index; i++) {
temp[i] = list[i];
}
this.list = temp;
}
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(String.format("index : %d\n", this.index));
sb.append(String.format("length : %d\n", this.list.length));
for(int i=0; i<this.list.length; i++) {
sb.append(String.format("\t%d : %s\n",i , list[i]));
}
return sb.toString();
}
}
package com.test.question;
public class Q0106 {
public static void main(String[] args) {
//배열 생성
MyStack stack = new MyStack();
//추가
System.out.println("-추가-");
stack.push("빨강");
stack.push("노랑");
stack.push("파랑");
stack.push("주황");
stack.push("검정");
System.out.println();
//읽기
System.out.println("-읽기-");
System.out.println(stack.pop());
System.out.println(stack.pop());
System.out.println(stack.pop());
System.out.println();
//개수
System.out.println("-개수-");
System.out.println(stack.size());
System.out.println();
//확인
System.out.println("-확인-");
System.out.println(stack.peek());
System.out.println(stack.peek());
System.out.println(stack.size());
System.out.println();
//크기 조절
System.out.println("-크기 조절-");
stack.trimToSize();
System.out.println();
//초기화
System.out.println("-초기화-");
stack.clear();
System.out.println(stack.size());
}
}
- 실행결과
728x90
'자바' 카테고리의 다른 글
JAVA STEP 37. HashMap 직접 구현하기 (0) | 2023.02.24 |
---|---|
JAVA STEP 36. 컬렉션(HashMap) (0) | 2023.02.24 |
JAVA STEP 34. 컬렉션(Queue&Stack) (0) | 2023.02.23 |
JAVA STEP 33. ArrayList 직접 구현하기 (0) | 2023.02.23 |
JAVA STEP 32. 컬렉션(ArrayList) (0) | 2023.02.23 |