간단한 스택(stack) 함수 > javascript
javascript

간단한 스택(stack) 함수

조회 29회 댓글 0건

자료구조에서 3가지를 배웁니다.

큐, 스택, 디큐 여기서 스택은 먼저 들어간것이 나중에 나오는 방식 입니다. 

즉, 최근에 들어간것이 먼저 나옵니다.


f08f4a3d7c3248096854e2720bc04fa9_1671328257_076.png
 


브라우저의 앞으로가기 뒤로가기 같은 것을 생각하시면 될것 같습니다.

이건 구현하려면. 두개의 스택을 만들고 넣고 빼고 해야 될듯 합니다.


function Stack(max_size)
{
  const SIZE  = max_size;
  let top     = 0;
  let aItem   = [];
 
  return {
    pop() {
      if(top < 1) {
        return -11;
      }
      else {
        let temp = aItem[top];
        top--;
        return temp;
      }
    },
    push(item) {
      if(SIZE > top) {
        top++;
        return aItem[top] = item;
      }
      else {
        return -21;
      }
    },
    peek() {
        return aItem[top];
    },
    length() {
      return top;
    },    
    clear() {
      top     = 0;
      aItem   = [];
    }        
  }
}

var a = Stack(999);
a.push(1);
a.push(2);
var test = a.pop();
console.log('test:', test);
a.clear();
var test = a.pop();
console.log('test:', test);
 


통상적으로 클래스는 대문자로 시작합니다.

본인만의 규칙을 정하는 것이 좋습니다. 회사면 회사에서 다른직원이 봐도 뭔지 알 수 있게 헝가리안표기법을 사용하는것도 좋겠습니다.



* 참고한곳

https://coding-restaurant.tistory.com/385

https://dororongju.tistory.com/105




  • 페이스북으로 공유
  • 트위터로  공유
  • 구글플러스로 공유
전체 90건 1 페이지
  • profile_image 파일저장이나 또는 가져올때등 상대경로로 호출 하는 경우도 있지만때론 전체 경로를 알아야 되는 경우가 있습니다.그럴때 현재 디렉토리 기준으로 처리하면 좋은때 이럴때 사용 합니다.  // 현재 디렉토리   const _DIR_   = process.cwd();  php의 __DIR__ 과 같은 역활 입니다.확인 결과 위 예제는 잘 되는 것입니다. 현재 V16 버전에서 문제 없었습니다.버전 업그레이드가 심해서 안되는것 들이 종종 입니다.요즘 언어들 …
  • profile_image 현재 nodejs 실행중인 유저를 알아내기 위한 것입니다.같은 프로그램을 쉘에서 실행하기도 하고 웹서버를 통해서 실행하기도 합니다.그런 경우 파일을 쓰게 되면 문제가 발생합니다.  import os from "os";  let osUser  = os.userInfo().username;  if ( osUser  == 'root' ) {    console.log('루트 유저: ', osUser);  }  else {    console.log(…
  • profile_image 아작스로 서버에 전송하는 기능까지 테스트 된것입니다.jQuery 버전에 따라서 ajax 전송하는 방식이 약간 다른 부분이 있으니 버전 참고하세요.본인이 현재 사용하는것과 여기 샘플의 버전이 비슷하면 문제가 되지 않을듯 싶습니다.<!DOCTYPE html><html lang="ko"><head>  <meta charset="UTF-8">  <meta http-equiv="X-UA-Compatible…
  • profile_image 백엔드의 PDF-LIB에서 폰트를 지정하지 않으면 오류가 발생 합니다.영문은 문제 되지 않지만 한글의 경우 오류를 만나게 됩니다.그렇기 때문에 커스텀 폰드를 지정해야 하는데 스탠다드폰트가 아닌 별도 폰트를 사용할 때 필요한 부분입니다.Error: WinAnsi cannot encode "한" 이러한 오류를 만나게 된다면 한글을 사용할 수 없는 폰트이기 때문입니다.    // https://pdf-lib.js.org/#examples  impor…
  • profile_image 특정 문자로 구분자를 줘서 문자열로 만들어주는 함수인데요PHP의 implode에 해당하는 기능입니다.배열의 경우는 간단하게 join 메소드를 사용하면 되는데요. 객체는 안되기 때문에 만들어진것입니다.  let aa = {    'bb1' : 345,    'cc'  : 23,    'ee'  : 'abc'  }  let bb = ['name','2',33,5,'age'];    /**   * 문자열 구분자로 합치기   *   * @param s…
  • profile_image 파일명에서 파일의 확장자만 필요한 경우 사용합니다.자바스크립트 이긴 하지만 nodejs에서 사용해도 동일합니다.블라우저의 자바스크립트에서 사용하는 함수를 백엔드의 노드에서 사용해도 문제 없습니다.  /**   * 파일 확장자   *   * @param string file   *   * @return [type]   *   */  function file_ext( file ) {    let fileExt  = file.split(".").po…
  • profile_image 다른 프로그램 언어와 데이터를 주고 받을때 많이 사용하는 json 문자열과 객체형태로 서로 변환하는 방법에 대한것입니다.여개서 객체는 연관배열로 생각하시면 됩니다.연관배열은 배열의 키 부분이 문자열이 들어갈 수 있는것을 말합니다.  // json 문자열로 만들기  let oParm   = {    'test'    : 123,    'abc'     : '345'  };  console.log('-- 현재값 --------------------…