Stack 구현하기 (java)

롱롱·2022년 12월 11일
0

algorithm

목록 보기
2/5
post-thumbnail

1. Stack이란

나중에 집어 넣은 데이터가 먼저 나오는 자료구조입니다.


2. Constructor

value와 밑의 Node를 가리키는 prev로 구성된 Node를 만들어 사용합니다.

class Node {
	int value;
	Node prev;

	Node(int value) {
		this.value = value;
	}
}

public class Stack {

	private Node top;

	public Stack(int value) {
		Node newNode = new Node(value);
		top = newNode;
	}
}

3. Push

  1. Push는 Stack에 넣을 값(value)를 인자로 받습니다.
  2. 만약 Stack이 비어있으면 새로운 Node를 top이 가리키도록 합니다.
  3. 만약 Stack이 비어있지 않다면 새로운 Node 밑에 top이 오도록 하고, top이 새로운 Node를 가리키도록 갱신합니다.
	public void push(int value) {
		Node newNode = new Node(value);
		if (top == null) {
			top = newNode;
		} else {
			newNode.prev = top;
			top = newNode;
		}
	}

4. Pop

  1. Pop은 Stack의 가장 위에 있는 Node를 return하고, 해당 Node를 삭제합니다.
  2. 만약 Stack이 비어있으면 null을 return합니다.
  3. 임시변수 temp에 top을 저장하고, top을 top 밑의 Node로 갱신합니다.
  4. temp와 Stack의 연결고리를 끊어주고 temp를 return합니다.
	public Node pop() {
		if (top == null) {
			return null;
		}
		Node temp = top;
		top = top.prev;
		temp.prev = null;
		return temp;
	}

5. Peek

  1. Peek는 Stack의 가장 위에 있는 Node를 return합니다.
	public Node peek() {
		return top;
	}

6. Empty

  1. Empty는 Stack이 비어있으면 true, 비어있지 않으면 false를 return합니다.
	public boolean empty() {
		return top==null;
	}

0개의 댓글

관련 채용 정보