>  기사  >  웹 프론트엔드  >  JS에서 스택을 표현하기 위해 두 개의 대기열을 구현하는 방법

JS에서 스택을 표현하기 위해 두 개의 대기열을 구현하는 방법

亚连
亚连원래의
2018-06-20 18:10:581327검색

이 글은 2개의 큐를 사용하여 스택을 표현하는 JS 방식을 주로 소개하고, 2개의 큐를 사용하여 스택을 표현하는 원리를 간략하게 분석하고, 구체적인 예시를 통해 자바스크립트 관련 조작 스킬을 분석하여 도움이 필요한 친구들이 참고할 수 있습니다

The 이 기사의 예제에서는 두 개의 대기열을 사용하여 스택을 나타내는 JS 방법을 설명합니다. 참조를 위해 모든 사람과 공유하세요. 세부 사항은 다음과 같습니다.

회로도를 먼저 살펴보세요.

아이디어를 정리한 다음 쓰기 시작하세요.

<!DOCTYPE html>
<html>
<head>
  <title>2 Queue</title>
  <meta charset="utf-8"/>
  <script type="text/javascript">
  var arr1 = [];
  var arr2 = [];
    function Queue(arr){
      this.push = function(element){
        return arr.push(element);
      }
      this.pop = function(){
        return arr.shift();
      }
      this.size = function(){
        return arr.length;
      }
      this.display = function(){
        console.log(arr);
      }
    }
    var queue1 = new Queue(arr1);
    queue1.push(1);
    queue1.push(4);
    queue1.push(5);
    queue1.push(7);
    queue1.display();
    var queue2 = new Queue(arr2);
    //利用两个队列实现栈。放在数组中打印
    var res = [], k = 0;
    while(queue1.size()!=0){
      var len = queue1.size();
      for(var i = 0; i<len-1; i++){
        queue2.push(queue1.pop());
      }
      // 打印queue1最后一个元素,并出队
      res[k] = queue1.pop();
      ++k;
      // 队列2的元素放置到队列1中
      for(var i = 0; i<len-1; i++){
        queue1.push(queue2.pop());
      }
    }
    console.log("res:" + res);
    //利用两个队列实现栈。单个弹出
    while(queue1.size()!=0){
      var len = queue1.size();
      for(var i = 0; i<len-1; i++){
        queue2.push(queue1.pop());
      }
      // 打印queue1最后一个元素,并出队
      console.log(queue1.pop());
      // 队列2的元素放置到队列1中
      for(var i = 0; i<len-1; i++){
        queue1.push(queue2.pop());
      }
    }
  </script>
</head>
<body>
</body>
</html>

결과 실행:

위 이것은 모두를 위해 제가 정리한 것입니다. 앞으로 모든 사람에게 도움이 되기를 바랍니다.

관련 기사:

async-validator를 사용하여 양식 구성 요소를 작성하는 방법(자세한 자습서)

WeChat 애플릿을 사용하여 이미지 업로드 기능을 구현하는 방법

vue를 사용하여 CSS 전환 효과를 구현하는 방법

in js 이미지 업로드 및 압축 기능 구현 방법(자세한 튜토리얼)

위 내용은 JS에서 스택을 표현하기 위해 두 개의 대기열을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.