본문 바로가기
자료구조와 알고리즘/자료구조

스택

by oncerun 2020. 8. 18.
반응형

데이터를 제한적으로 접근할 수 있는 구조

 - 한쪽 끝에서만 자료를 넣거나 뺄 수 있는 구조

 

가장 나중에 쌓은 데이터를 가장 먼저 빼낼 수 있는 데이터 구조

 

1. 스택 구조 

  

스택은 LIFO (Last In, First Out) 또는 FILO(Frist In, Last Out) 데이터 관리 방식을 따름

 LIFO : 마지막에 넣은 데이터를 먼저 추출하는 데이터 관리 정책

 FILO : 처음에 넣은 데이터를 가장 마지막에 추출하는 데이터 관리 정책

 

대표적인 스택의 활용

 컴퓨터 내부의 프로세스 구조의 함수 동작 방식

 

주요 기능

 push() : 데이터를 스택에 넣기

 pop() : 데이터를 스택에서 꺼내기

 

스택의 장단점

 

장점

 구조가 단순해서 , 구현이 쉽다

 데이터 저장/읽는 속도가 빠르다.

 

단점

 데이터 최대 개수를 미리 정해야 하므로 저장 공간의 낭비가 발생할 수 있습니다.

 

 

스택은 단순하고 빠른 성능을 위해 사용되므로, 보통 배열 구조를 활용해서 구현하는 것이 일반적이다. 이런 경우 단점이 발생할 수 있습니다.

 

 

Java에서는 Stack 클래스가 정의되어 있으며 java.util.Stack에 존재한다.

 

import java.util.Stack;

Stack<String> stack = new Stack<String>();

String str = "hello";

for(int i = 0 ; i < str.length() ; i ++ )
{
	stack.push(str.substring(i, i+1));
}

if(!stack.isEmpty())
{
    System.out.println(stack.pop()); //
}

System.out.println(stack.size());
System.out.println(stack.peek());

push() // 데이터 삽입

pop() // 마지막 데이터 꺼내서 반환

peek() // 마지막 데이터 반환

size() // 스택 크기

isEmpty() // 비어있는지 여부

python으로는 list 변수로 pop , push기능을 구현해 본다.

stack_list = list()

def push(data):
	stack_list.append(data)
    
def pop():
	data = stack_list[-1]
    del stack_list[-1]
    return data

 

반응형

'자료구조와 알고리즘 > 자료구조' 카테고리의 다른 글

해쉬 테이블  (0) 2020.09.02
링크드 리스트  (0) 2020.08.26
큐 (Queue)  (0) 2020.08.17
배열  (0) 2020.08.17
자료구조  (0) 2020.07.29

댓글