생쌩초보
10
2020-11-16 00:57:04
4
225

스택 관련 질문 부탁드립니다 ㅠㅠ


스택에서 pop, push는 잘 되는데 peek 메서드를 추가한 후 peek를 호출해보니 null값만 나옵니다 tos값은 찍어봤는데 pop, push 에서 변화는 그대로 잘 찍힙니다. tos == null 부분도 없애고 그냥 리턴값만 줘봐도 똑같았습니다. 

왜 값이 안나오는건지 해결방법과 이유가 궁금합니다 ㅠㅠ 부탁드려요 고수님들

public class GStack <T> {
	
	int tos;
	Object [] stck;
	
	public GStack() {
		tos = 0;
		stck = new Object [10];
	}
	
	public void push(T item) {
		if(tos == 10)
			return;
		stck[tos] = item;
		tos++;		
	}
	
	public T pop() {
		if(tos == 0)
			return null;
		tos--;
		return (T)stck[tos];
	}
        public T peek() {
		if(tos == 0)
			return null;
		return (T)stck[tos];
	}
}



0
  • 답변 4

  • noIdle
    59
    2020-11-16 02:15:56
    peek 는 tos - 1 로 평가해야하지않나요??
  • 생쌩초보
    10
    2020-11-16 10:06:20

    답변 감사합니다

    근데 그렇게 하면 pop랑 똑같아 지지 않나요? ㅠㅠ

  • 스타
    3k
    2020-11-16 10:22:28
    return (T)stck[tos - 1];
  • noIdle
    59
    2020-11-16 11:41:52

    tos - 1 이랑 tos-- 은 완전히 다릅니다. 초기 tos 를 -1 로 두고 구현하시면 이해하기 편하실거에요.

    직접 해보시는걸 추천드려요!

  • 로그인을 하시면 답변을 등록할 수 있습니다.