Stack & Queue


Arrayは、JavaScriptやPythonではなく、すべてのプログラミング言語で最も多く使われているデータ構造です.
  • アレイには、次の機能があります.
  • は、データを順次格納する.
  • indexで配列の値に近いため、速度が速い.
  • したがって、
  • は、相関および連続データの処理において配列
  • を用いる.
  • したがって、データ構造は問題解決の中心である.
  • 今日はアレイに密接に関連するStackとQueueを学びに来ました.
  • > Stack


    LIFO (Last In First Out)


    最後に入力したデータが最初に出ます.

    スタックという資料の構造は実は私たちの生活と非常に密接です.上図のように、美味しいアイスクリームのグリルに積まれたものも積み重ねられていて、読む本も積み重ねられています.
    S.coup~読む本もデータじゃないの?私たちはデータと一緒に生活しています.
    Q.スタックの特徴は?
    まず、
  • が最近蓄積したデータを処理する.
  • コンピュータ世界のスタック


    このプロパティは、コンピュータの世界でスタックをどのように使用しますか?いくつかの例を見てみましょう.
  • 開発者の最大コミュニティスタックOverFlow
  • ブラウザのHistory
  • 端末cd(ディレクトリの変更)、pwd(現在のパスを理解)コマンド
  • .
  • 関数は、呼スタック
  • を実行する.

    > Queue


    FIFO (First In First Out)


    初めて入力したデータが一番先に出ます.

    Qこの資料の構造も私たちの日常生活から離れられない.上の写真だけ見ればわかるでしょ?
    私たちはスーパーで野菜を買ったり、バスを待ったり、遊園地に並んだりして、並んでいるデータです.Q公平一番先に並んだ人が一番先にレジを通って、バスに乗って、アトラクションに乗ったからです.
    Q.ではQの特徴は?
  • で最初に入力されたデータは、まず処理される.
  • コンピュータ世界のキュー

  • プリンタスケジューラ
  • JavaScript非同期処理(ex.DOMイベント、settimeout、HTTP通信用fetch関数など)

  • スタック実装例

    
    #stack.py**
    
        ```python
       class Stack:
        def __init__(self):
            self.state = []
    
        def push(self, data):
    			# 데이터를 스택에 push 하는 것을 구현 해 주세요
                return self.state.append(data)
    
        def pop(self):
    			# 데이터를 스택에서 pop 해서 그 값을 리턴하도록 구현 해 주세요
                value = self.state.pop()
                if value is not None:
                    return value
                else:
                    print('Stack is empty.')
    
        def getPeak(self):
    			# 스택의 최상위 값을 리턴하도록 구현 해 주세요
            if self.state:
                return self.state[-1]
            else:
                print('Stack is empty.')
        
        def isEmpty(self):
            # 데이터가 stack에 있는지 유무 파악
            return not bool(self.state)
        
        def size(self):
            # stack에 몇개의 값이 있는지 확인
            return len(self.state)
    
        def __repr__(self):
            return repr(self.state)
    
    if __name__ == '__main__':
        stack = Stack()
        print('스택이 비었나요?: {}'.format(stack.isEmpty()))
        print('스택에 숫자 0-9를 추가합니다.')
        for i in range(10):
            stack.push(i)
        print('스택 크기 : {0}'.format(stack.size()))
        print('size: {}'.format(stack.size()))
        print('getPeak: {}'.format(stack.getPeak()))
        print('pop: {}'.format(stack.pop()))
        print('getPeak: {}'.format(stack.getPeak()))
        print('Empty??? {}'.format(stack.isEmpty()))
        print(stack)
    
    스택이 비었나요?: True
    스택에 숫자 0-9를 추가합니다.
    스택 크기 : 10
    size: 10
    getPeak: 9
    pop: 9
    getPeak: 8
    Empty??? False
    [0, 1, 2, 3, 4, 5, 6, 7, 8] 

    キューの実装例

    class Queue:
       def __init__(self):
           self.state = []
    
       def enqueue(self, data):
    			# queue 뒤쪽에 항목을 삽입합니다.
           self.state.insert(0, data)
    
       def dequeue(self):
    			# Queue앞 쪽의 항목을 반환하고, 제거
           value = self.state.pop()
           if value is not None:
               return value
           else:
               print('Queue is empty.')
    
       def getPeak(self):
    			# 스택의 최상위 값을 리턴하도록 구현 해 주세요
           if self.state:
               return self.state[-1]
           else:
               print('Stack is empty.')
       
       def isEmpty(self):
           # 데이터가 stack에 있는지 유무 파악
           return not bool(self.state)
       
       def size(self):
           # stack에 몇개의 값이 있는지 확인
           return len(self.state)
    
       def __repr__(self):
           return repr(self.state)
    
    if __name__ == '__main__':
       queue = Queue()
       print('스택이 비었나요?: {}'.format(queue.isEmpty()))
       print('스택에 숫자 0-9를 추가합니다.')
       for i in range(10):
           queue.enqueue(i)
       print('스택 크기 : {0}'.format(queue.size()))
       print('size: {}'.format(queue.size()))
       print('getPeak: {}'.format(queue.getPeak()))
       print('pop: {}'.format(queue.dequeue()))
       print('getPeak: {}'.format(queue.getPeak()))
       print('Empty??? {}'.format(queue.isEmpty()))
       print(queue)
    Queue 비었나요?: True
    Queue 숫자 0-9를 추가합니다.
    Queue크기 : 10
    size: 10
    getPeak: 0
    pop: 0
    getPeak: 1
    Empty??? False
    [9, 8, 7, 6, 5, 4, 3, 2, 1]