(자료구조) 스택, 큐 - 파이썬

    스택

    '스택'이란?

    후입선출 (LIFO" Last In First Out)의 자료구조.
    가장 늦게 들어온 값이 가장 늦게 나가는데, 이는 줄서기와 반대되는 개념이다.
    리스트와는 다르게 읽기, 삽입, 삭제가 모든 인덱스에서 실행되지 못하고 한쪽 끝에서만 행할 수 있다.
    그 한쪽 끝을 스택에서는 top이라고 한다.

    쓰는 방법

    파이썬에서는 스택을 따로 명시할 수 없다. 대신 리스트를 스택처럼 활용할 수 있는 내장함수가 있다.

    선언

    Stack = [1, 2, 3]
    print(Stack)
    # [1, 2, 3]

    리스트를 선언하고 마음속으로 '이건 스택이다!' 라고 굳게 다짐하면 스택이 선언된다.

    원소 삽입

    Stack = [1, 2, 3]
    Stack.append(4)
    print(Stack)
    # [1, 2, 3, 4]

    리스트에서 쓸때처럼 append함수를 사용하면 된다.

    원소 삭제

    Stack = [1, 2, 3]
    print(Stack.pop())
    # 3
    print(Stack)
    # [1, 2]

    pop 내장함수를 이용하여 원소를 삭제할 수 있다.
    신기하게도 pop함수를 이용하면 삭제되는 원소를 리턴한다.

    원소 가져오기

    Stack = [1, 2, 3]
    print(Stack[-1])
    # 3

    파이썬에서는 -1인덱스가 리스트의 마지막 요소를 의미하기 때문에 top을 가져올 수 있다.

    '큐'란?

    선입선출 (FIFO" First In First Out)의 자료구조.
    편의점 알바생 빙의해서 생각하면 된다.
    먼저 들어간 놈이 먼저 나오는 굉장히 매너있는 자료구조이다.
    스택이랑 대동소의하다.

    쓰는 방법

    후술할 내용 이외에는 스택과 같다.

    원소 삭제

    Stack = [1, 2, 3]
    print(Stack.pop(0))
    # 1
    print(Stack)
    # [2, 3]

    pop함수의 인수로 0을 넣으면 맨 앞에 있는 놈을 삭제한다.

    원소 가져오기

    Stack = [1, 2, 3]
    print(Stack[0])
    # 1

    0번째 인덱스의 맨 앞 요소를 가져오면 된다.

    다른 방법

    파이썬에서 큐를 사용하는 여러 방법 중 한 가지를 설명 했는데, 다른 방법들은 다음 기회에 설명하도록 하겠다.

    댓글