1. 대기열과 스택에 대한 간단한 소개
1.1. 대기열의 기본 개념
대기열 : FIFO (First-in-First-Out)를 지원하는 컬렉션입니다. 즉, 먼저 삽입 된 데이터가 먼저 가져옵니다!
아래 그림과 같이 :
1.2. 스택의 기본 개념
Stack : Lifo (Last-in-First-Out)를 지원하는 컬렉션입니다. 즉, 나중에 삽입되는 데이터가 먼저 가져옵니다!
아래 그림과 같이 :
2. JavaScript에서 대기열과 스택을 구현하십시오
JavaScript에서 큐 및 배열은 주로 배열을 통해 구현됩니다. 다음 방법은 JS 어레이에 제공되어 큐 및 스택을 쉽게 구현할 수 있습니다.
• 시프트 : 배열에서 첫 번째 요소를 삭제 하고이 요소의 값을 반환합니다.
• 변속 해제 : 배열 시작시 하나 이상의 요소를 추가하고 새 길이를 반환합니다.
• 푸시 : 중간 끝에 요소를 추가하고 새 길이를 반환합니다.
• 팝 : 배열에서 마지막 요소를 삭제 하고이 요소의 값을 반환합니다.
2.1. 대기열을 구현하십시오
매 console.log ( "enter"); a.unshift () console.log (a); // -----> a.unshift (); console.log (a); // ----->, a.unshift (); console.log (a); //- ---->, a.unshift (); console.log (a); // ----->, a.unshift (); console.log (a); // ---->, a.unshift (); console.log (a); // ----> ,, console .Log ( "출구, 우선, 우선"); console.log (a); // 팝 : 배열에서 마지막 요소를 삭제 하고이 요소의 값을 반환합니다. a.pop (); // -----> console.log (a); a.pop (); // -----> console.log (a); a.pop (); // -----> console.log (a); a.pop (); // -----> console.log (a); a.pop (); //---> console.log (a);
Google 브라우저 콘솔의 출력 효과는 다음 그림에 나와 있습니다.
2.2. 스택 구현
<script type = "text/javaScript"> // 스택을 시뮬레이션 할 배열 생성 var var a = new Array (); console.log (a); // 푸시 : 배열 끝에 하나 이상의 요소를 추가하고 새 길이를 반환합니다. console.log ( "stack"); a.push () console.log (a); // -----> a.push (); console.log (a); // ----->, a.push (); console.log (a); // ----- ->. 아웃 스택, 우선 "); console.log (a); // 팝 : 배열에서 마지막 요소를 삭제 하고이 요소의 값을 반환합니다. a.pop (); // -----> console.log (a); a.pop (); // -----> console.log (a); a.pop (); // -----> console.log (a); a.pop (); // -----> console.log (a); a.pop (); //---> console.log (a);
Google 브라우저 콘솔의 출력 효과는 다음 그림에 나와 있습니다.
2.3. 푸시 방법 및 변속 방법의 성능 테스트
Array의 푸시 및 변속 방법은 현재 배열에 요소를 추가 할 수 있습니다. 차이점은 푸시가 끝에 추가되고, 시프트는 처음에 추가된다는 것입니다. 원칙에서, 우리는 Unshift의 효율성이 상대적으로 낮다는 것을 알 수 있습니다. 그 이유는 요소를 추가 할 때마다 기존 요소를 한 위치로 이동하기 때문입니다. 그러나 효율성의 차이는 얼마나 큰가요? 아래에서 간단한 테스트를하겠습니다.
<script type = "text/javaScript">/*"var s =+newDate ();"에 대한 트릭 설명의 설명; 코드는 다음과 같습니다. =+이 연산자는 존재하지 않습니다.이 연산자는. = []; var starttime = +new 날짜 (); //+new 날짜 ()는 새 날짜 (). valueof ()와 동일하며 현재 시간의 밀리 초를 반환합니다. // (var i =; i <; i ++) {arr.push (i); } var endtime =+new date (); console.log ( "배열에 요소를 추가하기 위해 푸시 메소드를 호출하는 데 시간이 걸립니다"+(EndTime-StartTime)+"ms"); starttime = +새 날짜 (); arr = []; // UNSHIFT 성능 테스트 (var i =; i <; i ++) {arr.unshift (i); } endtime =+new date (); console.log ( "어레이트 메소드를 호출하여 배열에 요소를 추가하는 데 시간이 걸립니다"+(endtime-starttime)+"ms"); </스크립트>이 코드는 각각 100,000 개의 푸시 및 해제 작업을 수행하며 Google 브라우저에서 한 번 실행합니다. 결과는 아래 그림에 나와 있습니다.
Unshift가 푸시보다 약 100 배 느린다는 것을 알 수 있습니다! 따라서 일상 생활, 특히 큰 배열의 경우 조심스럽게 조정하지 않아야합니다. Unshift의 효과를 달성 해야하는 경우 배열을 역전시킬 수있는 Array의 리버스 방법을 사용할 수 있습니다. 먼저 푸시를 사용하여 배열에 넣을 요소를 추가 한 다음 다시 리버스를 실행하여 시프트의 효과를 달성하십시오. 예를 들어:
<script type = "text/javaScript"> // 스택을 시뮬레이션하기위한 배열 생성 var var a = new array (); 푸시 메소드를 사용하여 요소를 추가하여 a.push () a.push (); a.push (); console.log ( "배열의 배열 순서가 바뀌기 전에"; 배열을 뒤집을 수있는 리버스 (Reverse)라는 메소드. 먼저 푸시를 사용하여 배열에 넣을 요소를 추가 한 다음 다시 반대를 수행하면 UNSHIFT의 효과가 달성됩니다.
Google 브라우저 콘솔의 출력 효과는 다음 그림에 나와 있습니다.
실행중인 결과로 판단하면 배열 요소의 순서가 반전되었습니다.
2.4. 리버스 방법의 성능 테스트
리버스 성능은 무엇입니까? 다시 테스트합시다 :
<script type = "text/javaScript"> var arr = [], s = +새 날짜; for (var i =; i <; i ++) {arr.push (i); } // reverse 메소드를 호출하여 배열 arr.reverse ()의 요소 순서를 되돌립니다. console.log ( "배열에서 요소 순서를 뒤집기 위해 리버스 메소드를 호출하십시오."+(+new date -s)+"msec"); </script>Google 브라우저 콘솔의 출력 효과는 다음 그림에 나와 있습니다.
런닝 효과에서 리버스 방법이 매우 고성능이며 자신있게 사용할 수 있음을 알 수 있습니다.
위의 것은 JavaScript의 어레이를 통해 큐와 스택을 구현하는 요약이며, 큰 배열 작동에서 푸시, 변속 및 반전의 성능 장점과 단점을 간단히 테스트했습니다.
위는 편집기가 소개 한 JavaScript 배열 구현 데이터 구조의 큐 및 스택입니다. 모든 사람에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 모든 사람에게 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!