Data Structure(1) - Stack, Queue


Stack


StackはLIFOタイプです.
最近アクセスしたサイト(後退、前進)、関数のcall stackなどが典型的なstack使用例です.

  • Params
    一番上(最新)のデータを指すtop
    ストレージスペースのstorageの指定

  • Method
    size()は、データの格納サイズ()を表します.
    データ挿入用push(data)
    最新データのpop()
    それ以外に、isEmpty()やisFull()などの実装の程度にも依存します.

  • Psuedo Code
  • size() {
      // top속성을 활용, top은 push됨에 따라 top++될 것이므로, 
      // top을 return 하면 그것이 바로 size가 될 것임
    }
    push(data) {
      // 1. storage의 top인덱스에 data를 할당
      // 2. top을 ++처리
    }
    pop() {
      // 1. 변수에 storage의 top에 해당하는 data를 찾아서 저장
      // 2. 그 data는 삭제
      // 3. 만약, 삭제 후의 top이 0이 아니라면 top을 --처리
      // 4. data를 저장했던 변수를 return
    }

    Queue


    QueueはFIFOタイプです.
    最初に入ったデータは最初に処理され、最後に入ったデータは前のデータがすべて処理されるまで待たなければならない.
    キューは、入力順にデータを処理する必要がある場合に使用します.
    i.e)プリンタキュー等

  • Params
    きおくくうかん
    いちばん前
    一番後ろ

  • Method
    size()は、データの格納サイズ()を表します.
    一番後ろのデータを挿入するenqueue(data)
    先頭のデータからデータを抽出するdequeue()
    また、peek()等により実現度合いが異なります.

  • Psuedo Code
  • size() {
      // 가장 뒤를 가리키는 rear를 return하거나,
      // 혹은 배열이면 length, 객체면 키만 뽑아내 그 길이를 return
    }
    enqueue(data) {
      // 1. rear에 data 할당
      // 2. 상황에 따라 front, rear 따로 처리해야 할 것
    }
    dequeue() {
      // 1. 변수에 front가 가리키는 data 저장
      // 2. 해당 data 삭제
      // 3. 만약, rear가 현재 0이 아니라면 front++, rear-- 처리
      // 4. 만약, rear가 0이라면 front는 0으로 처리
      // 5. data를 저장해뒀던 변수 return
    }