-
자료구조 - 스택(Stack)CS/자료구조 2021. 6. 26. 12:25
- 스택 구조
- 가장 나중에 쌓은 데이터를 가장 먼저 빼낼 수 있는 데이터 구조
- 스택은 LIFO(Last In, First Out) 또는 FILO(First In, Last Out) 데이터 관리 방식을 따름
- LIFO: 마지막에 넣은 데이터를 가장 먼저 추출하는 데이터 관리 정책
- FILO: 처음에 넣은 데이터를 가장 마지막에 추출하는 데이터 관리 정책
- 대표적인 스택의 활용
- 컴퓨터 내부의 프로세스 구조의 함수 동작 방식
- 컴퓨터 내부의 프로세스 구조의 함수 동작 방식
- 주요 기능
- push(): 데이터를 스택에 넣기
- pop(): 데이터를 스택에서 꺼내기
- 시연: https://visualgo.net/en/list
VisuAlgo - Linked List (Single, Doubly), Stack, Queue, Deque
VisuAlgo is free of charge for Computer Science community on earth. If you like VisuAlgo, the only payment that we ask of you is for you to tell the existence of VisuAlgo to other Computer Science students/instructors that you know =) via Facebook, Twitter
visualgo.net
- 스택의 장단점
- 장점
- 구조가 단순해서 구현이 쉽다.
- 데이터 저장/읽기 속도가 빠르다.
- 단점
- 데이터 최대 개수를 미리 정해야 한다.
- 저장 공간의 낭비가 발생할 수 있다.
- 미리 최대 개수만큼의 저장 공간을 확보해야 함
- 미리 최대 개수만큼의 저장 공간을 확보해야 함
- 스택은 단순하고 빠른 성능을 위해 사용되므로 보통 배열 구조를 활용해서 구현하는 것이 일반적임
이 경우, 위에서 열거한 단점 발생
- 파이썬으로 Stack 구현
data_stack = list() data_stack.append(1) data_stack.append(2) data_stack.pop() // 2 // 리스트 변수로 스택을 다루는 pop,push 기능 구현 stack_list = list() def push(data): stack_list.append(data) def pop(): data = stack_list[-1] del stack_list[-1] return data
- 자바스크립트로 Stack 구현
class Stack { constructor() { this.stack = []; } push(data) { this.stack.push(data); } pop() { return this.stack.pop(); } } const stack = new Stack(); stack.push(1); stack.push(2); stack.pop(); // 2
'CS > 자료구조' 카테고리의 다른 글
자료구조 - 링크드 리스트(Linked List) (0) 2021.06.30 자료구조 - 큐(Queue) (0) 2021.06.25 자료구조 - 배열(Array) (0) 2021.06.25 자료구조란 ? (0) 2021.06.25