본문 바로가기

JAVA/쓸만한 코드

stack//스택// 원리 코드

ArrayStrack 클래스 생성

1. 사이즈 입력받아 배열로 생성

2. 공간이 비어있나? -> return boolean

3. 공간이 꽉차있나? -> return boolean

4. 입력 (매개변수 : 입력받을item)

  4-1. 공간이 가득찼나?

  4-2. 빈공간? -> top++;  stackArray[top]에 입력

5. 삭제 item = peek()// 최근에 추가된(Top) 데이터 조회, top--; return item;

6. 조회

  6-1. 비어있나 ? isEmpty , return null;

  6-2. return stackArray[top]

 

 

public Element push(Element item); // 데이터 추가

public Element pop(); // 최근에 추가된(Top) 데이터 삭제

public Element peek(); // 최근에 추가된(Top) 데이터 조회

public boolean empty(); // stack의 값이 비었는지 확인, 비었으면 true, 아니면 false

public int seach(Object o); // 인자값으로 받은 데이터의 위치 반환

 

 

ArrayStack 클래스

public class ArrayStack {

	private int top;
	private int maxSize;
	private Object stackArray[];
	//인덱스에 들어가는 변수 형이 String, Integer 상관없이 다 될 수 있게 Object로 설정함
	
	public ArrayStack(int maxSize) {
		this.maxSize = maxSize;//밖에서 입력한 size를 계속 사용하겠다 선언
		
		stackArray = new Object[maxSize];
		this.top = -1;
	}
	//stack 공간이 비어있는지 확인
	public boolean isEmpty() {
		return (this.top == -1);//true
	}
	//공간이 꽉 찼는지 확인
	public boolean full() {
		return (this.top == maxSize -1);//true
	}
	//insert
	public void push(Object item) {
		if (full()) {
			System.out.println("스택 공간이 가득차 있습니다");
			return;
		}
		top++;
		stackArray[top] = item;
	}
	//delete
	public Object pop() {//스택은 무조건 맨 위에것을 뺌 (pop라고 함)
		//리턴값이 없어도 되나 대부분 Object로 반환해줌 -> 확인하라고
		Object item = peek();
		top--;
		return item;
	}
	public Object peek() {
		if (isEmpty()) {
			System.out.println("스택 공간이 비어있습니다");
			return null;
		}
		return stackArray[top];//ArrayList의 size()-1과 동일
	}
}

 

 

main

public class mainClass {
	public static void main(String[] args) {
		/*
		 	Stack : First In Last Out
		 			실린더에 공을 넣고 빼는 경우
		 			in -> Push
		 */
		ArrayStack stack = new ArrayStack(10);
		
		String str = "AAA";
		stack.push(str);
		
		String peekStr = (String) stack.peek();//Object니까 String으로 캐스트 변환 함 
		System.out.println("top Object = "+ peekStr);
		//->top Object = AAA
		
		str = "BBB";
		stack.push(str);
		peekStr = (String) stack.peek();//Object니까 String으로 캐스트 변환 함 
		System.out.println("top Object = "+ peekStr);
		//->top Object = BBB
		
		String popStr = (String) stack.pop();
		System.out.println("pop Object = "+popStr);
		//->pop Object = BBB //B가 빠짐
		peekStr = (String) stack.peek();//Object니까 String으로 캐스트 변환 함 
		System.out.println("top Object = "+ peekStr);
		//->top Object = AAA //B가 빠져서 A만남음
		
		Integer in = 123;
		stack.push(in);
		
		int topInt = (Integer)stack.peek();
		System.out.println("topInt:"+topInt);
		//->topInt:123//top이 123이 됨
	}
}

'JAVA > 쓸만한 코드' 카테고리의 다른 글

싱글톤//야구 멤버  (0) 2020.06.10
Singleton//싱글톤//기본 코드  (0) 2020.06.10
Map//Baseball 야구멤버  (0) 2020.06.09
HashMap 코드  (0) 2020.06.09
DTO 기본형  (0) 2020.06.04