본문 바로가기
창고(2021년 이전)

[자료구조] Stack & Queue

by 측면삼각근 2019. 11. 15.
728x90
반응형

Stack

Stack은 자료를 차례대로 넣고(push)꺼낼 때는 가장 마지막에 쌓여진 자료부터 빼낸다.
배열에서의 array.psuch()와 array.pop() 메소드와 동일하다. -> LIFO(Last In Last Out)

  • 필요 변수 및 메소드
    1. someInstance (object) : 구현할 stack method를 담을 객체
    2. storage (object) : 배열을 흉내내기 위한 객체 
    3. count (number) : 마지막 Index 를 return 할 변수
    4. push() (method ): 데이터를 넣음
    5. pop() (method) : 데이터를 뺌
    6. size() (method) : 현재 존재하는 자료의 갯수를 return 함 

Sudo Code

//functional 의 방법으로 작성

let Stack = funciton(){
  let someInstance = new Object();
  let sotage = new Obect();
  let count = 0;
  
  //자료를 넣는 method
  someInstance.push = fucntion(vlaue){//value : 받을 자료
    //overflow를 고려해야함
    //1.overflow의 상황이인가?(count의 판단)
      //1-1. 'overflow' message 를 출력하며 종료
    //2.overflow 상황이 아닌가?
      //2-1. storage에 값을 넣어준다.
      //2-2. count를 증가시킴 
  }
  
  //자료를 빼는 method
  someInstance.pop = funciton(){
    //underflow를 고려해야함
    //1. underflow의 상황인가?
      //1-1. 'underflow' message를 출력하며 종료
    //2. underflow의 상황이 아닌가?
      //2-1. storage의 마지막 값을 뺌
      //2-2. count를 감소시킴
  }
  
  someinstance.size = funciton(){
  	// count를 반환함
  }
}

Queue

  • 필요 변수 및 메소드
    1. someInstance(object) : Queue method 를 담을 객체
    2. storage (object) : 자료를 담을 object , 키는 number이며, value로 자료 값을 저장할것
    3. count (number) : 자료의 갯수를 return함, dequeue메소드 구현에또한 활용
    4. enqueue() (method) : 데이터를 담기위한 메소드
    5. dequeue() (method) : 데이터를 빼기위한 메소드
    6. size() (method) : 현재 존재하는 자료의 갯수를 return 함 

Sudo Code

//Functional한 방법으로 작성
let queue = funciton(){
  let someInstance = {};
  let storage = {};
  let count = 0;
  
  someInstance.enqueue = function(value){//value : 넣을 자료
    //overflow의 상황을 고려해야함
    //1. overflow인가?
      // -overflow 출력 후 종료
    //2. overflow가 아닌가?
      // 2-1. count++;
      // 2-2. storage.count = value ->자료를 마지막에 넣어줌
  }
  
  someInstance.dequeue = function(){
    // underflow의 상황을 고려해야함
    // 1. underflow인가?
    //  -underflow출력 후 종료
    // 2. underflow가 아닌가?
    //   2-1. storage['0']의 자료를 지움
    //   2-2. 이후 자료가 더 존재하는가?
    //     2-2-1. 존재하지 않음 : 종료
    //     2-2-2. 존재함 : storage의 key를 renumbering - count 변수를 활용
    // 3. count--;
  
  }
  
  someInstance.size = function(){
  	//count를 return
  }
}

 

반응형