Algorithm/DataStructure

[DataStructure] Stack(스택)

  • -
728x90

Stack(스택)

 

Stack은 특정 데이터를 누적해서 쌓아 올린 형태의 구조이다.

스택의 push, pop 

 

스택의 특징

  • 같은 구조, 같은 크기의 자료를 정해진 방향으로만 쌓을 수 있다.
  • top은 가장 위(마지막)에 쌓여있는 데이터를 가리킨다.
  • top을 통해 top위 부분에 삽입하는 연산을 push, top을 삭제하는 연산을 pop이라고 한다.
  • LIFO(Last In First Out), 가장 마지막에 삽입된 자료가 가장 먼저 삭제되는 구조
  • 스택이 비어있을 때 pop연산을 하게되면 stack underflow가 일어난다.
  • 스택이 가득찼을 push연산을 하게되면 stack overflow 일어난다.

 

구현

class My_stack:
    # Constructor
    def __init__(self):
        self.items = list()
        self.top = 0
    # Adds element to the My_stack
    def push(self, item):
        self.items.append(item)
        self.top += 1
        return True
    # Removes element from My_stack
    def pop(self):
        if self.top <= 0:
            return ("stack underflow")
        ret = self.items.pop()
        self.top -= 1
        return ret
    # Peeks element from My_stack
    def peek(self):
        if self.isEmpty():
            return ("stack is empty")
        ret = self.items[self.top - 1]
        return ret
    # Size of the My_stack
    def size(self) -> int:
        return self.top
    # is empty the My_stack
    def isEmpty(self) -> bool:
        return self.top == 0

s = My_stack()
for i in range(9):
    s.push(i)
print(s.items)
print(f"remove item: {s.pop()}")
print(s.items)
for i in range(9):
    print(f"removed item: {s.pop()}")
    print(s.items)
    print(f"top of stack: {s.peek()}")
    print(f"is Empty? {s.isEmpty()}")
    print()

 

728x90
300x250
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.