ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 스택(stack)과 큐(queue)
    ALGORITM 2022. 4. 18. 09:40

    스택(stack)

    나중에 들어간 데이터를 먼저 빼내는 데이터 구조 (LIFO: Last In First Out)

    파이썬에서는 list[]로 구현되어있다

     

    STACK 구조

    자료구조

    class stack:
        def __init__(self):  # 스택 객체 생성
            self.items = []
        def push(self, item):  # 스택 요소 추가 push(.append())
            self.items.append(item)
        def pop(self):   # 스택 요소 삭제 pop()
            return self.items.pop()
        def peek(self):  # 스택 맨 앞 요소 리턴
            return self[0]
        def isEmpty(self):  # 스택이 비었는지 확인(비었으면 True 리턴)
            return not self.items
    • a_list.append() - 괄호 안의 요소를 리스트 맨 뒤에 추가
    • a_list.pop() - 리스트의 맨 뒤에 요소를 꺼내고 리스트에서 삭제

     

    큐(queue)

    먼저 들어간 데이터를 먼저 빼내는 데이터 구조 선입선출 (FIFO : First In First Out)

    deque로 양방향에서 데이터를 추가 삭제할 수 있다

    queue 구조

    • a_ilst = deque()
    • 데크 형태의 리스트. 요소는 string타입, list형태
    • a_list.append()
    • 뒤에 요소를 추가
    • a_list.appendleft()
    • 앞에 요소를 추가
    • a_list.pop()
    • 오른쪽에서 요소를 꺼내고 리스트에서 삭제
    • a_list.popleft()
    • 왼쪽에서 요소를 꺼내고 리스트에서 삭제
    • a_list.extend()
    • 괄호 안의 요소를 오른쪽에 추가 int는 str으로 변환 후 추가 가능. 리스트 형태의 요소는 int, str 상관없이 추가 가능
    • a_list.extendleft()
    • 괄호 안의 요소를 왼쪽에 추가
    • a_list.insert(idx, obj)
    • 해당 인덱스의 obj를 추가
    • a_list.remove(obj)
    • obj를 찾아서 삭제. 중복값이 있을 경우, 왼쪽 1개만 삭제
    • a_list.reserve()
    • 리스트 요소 좌우 반전
    • a_list.clear()
    • 리스트의 모든 요소 삭제
    • a_list.rotate(n)
    • 오른쪽으로 n칸 밀어서 맨 오른쪽값을 왼쪽에 붙이기
    • a_list.rotate(-n)
    • 왼쪽으로 n칸 밀어서 맨 왼쪽값을 오른쪽에 붙이기
    반응형

    'ALGORITM' 카테고리의 다른 글

    해시 테이블(Hash Table)  (0) 2022.04.18
    연결리스트(linked list)  (0) 2022.04.18
    배열(Array)  (0) 2022.04.11
© 2021 J.LOG