Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 데이터웨어하우스
- 개발
- 프로그래머스
- 취준
- Amazon
- 운영체제
- 클라우드
- 자료구조
- 파이썬
- 데브코스
- 데이터엔지니어링
- DataWarehouse
- Service
- WEB
- 개념정리
- 데이터엔지니어
- 에어플로우
- 웹자동화
- 웹크롤링
- 부트캠프
- SQL
- 관계형데이터베이스
- 알고리즘
- Django
- AWS
- 기술면접
- 데이터베이스
- 웹스크래핑
- airflow
- CS
Archives
- Today
- Total
사진과 음악을 좋아하는 개발자 지망생의 블로그
스택(Stack) 본문
반응형
1) 스택(Stack)
- 자료(Data element)를 단방향을 보관할 수 있는 (선형) 구조
- 단방향이므로 자료를 넣고(Push) 꺼낼 때(Pop) 한 쪽으로만 수행해야하는 제약이 있음 => 후입선출(LIFO)
※ Stack에서 발생하는 오류
- 비어 있는 스택에서 데이터 원소를 꺼내려 할 때 → Stack Underflow
- 꽉 찬 스택에 데이터 원소를 넣으려 할 때 → Stack Overflow
2) 스택의 추상적 자료구조 구현
① 배열(array, list)을 이용하여 구현 → Python List 와 method들을 이용
class ArrayStack :
def size(self) : # 현재 스택에 들어 있는 데이터 원소의 수
return len(self.data)
def isEmpty(self) : # 현재 스택이 비어 있는지를 판단
return self.size() == 0
def push(self, item) : # 데이터 원소 itme을 스택에 추가
return self.data.append(item)
def pop(self) : # 스택의 맨 위에 저장된 데이터 원소를 제거 및 반환
return self,data.pop()
def peek(self) : # 스택의 맨 위에 저장된 데이터 원소를 반환 (제거 X)
return self.data[-1]
② 연결 리스트(Linked List)를 이용하여 구현 → 양방향 연결 리스트 이용
class LinkedListStack:
def __init__(self):
self.data = DoublyLinkedList()
def size(self):
return self.data.getLength()
def isEmpty(self):
return self.size() == 0
def push(self, item):
node = Node(item)
self.data.insertAt(self.size() + 1, node)
def pop(self):
return self.data.popAt(self.size())
def peek(self):
return self.data.getAt(self.size()).data
반응형
'CS > 자료구조 & 알고리즘' 카테고리의 다른 글
큐 level 2 (환형 큐, Circular Queue) (0) | 2023.04.12 |
---|---|
큐(Queue) level 1 (0) | 2023.04.12 |
연결리스트 level 3 (Doubly Linked List) (0) | 2023.04.11 |
연결리스트 level 2 (Dummy Head Linked List) (0) | 2023.04.11 |
연결리스트 level 1 (0) | 2023.04.11 |