JavaScript 데이터 구조 및 알고리즘 stack_javascript 기술에 대한 자세한 설명
이전 글에서 블로그에서 소개한 목록은 가장 간단한 구조이지만, 좀 더 복잡한 구조를 다루려면 목록이 너무 단순해서 어떤 종류가 필요합니다. of 및 List는 스택과 비슷하지만 더 복잡한 데이터 구조입니다. 스택은 스택의 맨 위에서만 데이터를 추가하거나 삭제할 수 있으므로 효율적인 데이터 구조이므로 이 작업을 빠르고 쉽게 구현할 수 있습니다.
1: 스택 작업.
스택은 특별한 종류의 목록입니다. 스택의 요소는 스택의 맨 위에 있는 목록의 한쪽 끝을 통해서만 액세스할 수 있습니다. 예를 들어, 식당에서 설거지를 할 때 상판만 먼저 씻을 수 있습니다. 접시를 씻은 후에는 접시 더미 꼭대기까지만 나사로 고정할 수 있습니다. 스택은 LIFO(후입선출)라는 데이터 구조입니다.
스택은 후입선출 특성을 가지므로 스택의 맨 위에 있지 않은 요소에는 접근할 수 없습니다. 스택의 맨 아래에 있는 요소를 얻으려면 위의 요소에 접근해야 합니다. 먼저 제거되었습니다. 스택에서 수행할 수 있는 두 가지 주요 작업은 요소를 스택에 푸시하는 것과 스택에서 요소를 팝하는 것입니다. push() 메서드를 사용하여 스택에 푸시하고 pop() 메서드를 사용하여 스택에서 튀어나올 수 있습니다. pop() 메서드는 스택 맨 위에 있는 요소에 액세스할 수 있지만 이 메서드를 호출한 후에는 스택 맨 위에 있는 요소가 스택에서 영구적으로 삭제됩니다. 일반적으로 사용되는 또 다른 방법은 스택의 최상위 요소를 삭제하지 않고 반환하는 peek()입니다.
스택에 push하고 pop하는 실제 다이어그램은 다음과 같습니다.
push(), pop() 및 peek()는 스택의 세 가지 주요 메서드이지만 스택에는 다른 메서드와 속성이 있습니다. 다음과 같습니다:
clear(): 스택의 모든 요소를 지웁니다.
length(): 스택의 요소 수를 기록합니다.
2: 스택 구현은 다음과 같습니다.
다음과 같이 스택 클래스의 메서드를 구현하는 것으로 시작할 수 있습니다.
This.dataStore = [];
This.top = 0;
}
또한 push(), pop(), peek(),clear(), length() 메소드도 있습니다.
1. Push() 메서드; 새로운 요소를 스택에 밀어넣을 때 배열의 변수 top에 해당하는 위치에 저장한 후 다음 요소를 가리키도록 top 값을 1 증가시킵니다. 배열에서의 위치. 다음 코드:
This.dataStore[this.top] = 요소;
}
return this.dataStore[--this.top];
}
return this.dataStore[this.top - 1];
}
}
5. Clear(); 때로는 스택을 지우고 싶을 때 다음 코드를 사용하여 변수 top 값을 0으로 설정합니다.
함수 클리어() {
this.top = 0;
}
아래의 모든 코드:
함수 스택() {
This.dataStore = [];
This.top = 0;
}
Stack.prototype = {
//새 요소를 스택에 푸시
푸시: 함수(요소) {
This.dataStore[this.top] = 요소;
},
// 스택의 최상위 요소에 액세스하면 스택의 최상위 요소가 영구적으로 삭제됩니다.
팝: 함수(){
return this.dataStore[--this.top];
},
// 배열의 최상위 1번째 위치에 있는 요소, 즉 스택의 최상위 요소를 반환합니다
엿보기: 함수(){
return this.dataStore[this.top - 1];
},
//스택에 저장된 요소 수
길이: 함수(){
return this.top;
},
//스택 지우기
; 지우기: 함수(){
This.top = 0;
}
};
데모 예시는 다음과 같습니다.
var stack = new Stack();
stack.push("a");
stack.push("b");
stack.push("c");
console.log(stack.length()); // 3
console.log(stack.peek()); // c
var popped = stack.pop();
console.log(팝업); //c
console.log(stack.peek()) //b
stack.push("d");
console.log(stack.peek()) //d
스택.클리어();
console.log(stack.length()) // 0
console.log(stack.peek()) // 정의되지 않음
아래에서는 5와 같은 계승 함수의 재귀적 정의를 구현할 수 있습니다. 5의 계승! = 5*4*3*2*1
다음 코드:
함수 사실(n) {
var s = new Stack();
; 동안(n > 1) {
s.push(n--);
}
var 제품 = 1;
While(s.length() > 0) {
제품 *= s.pop();
}
반품상품입니다
}
console.log(fact(5));
위 코드의 의미는 다음과 같습니다. 먼저 숫자 5를 함수에 전달하고 while 루프를 사용하고 스택을 사용하여 push() 함수를 스택에 푸시한 후 변수 n이 다음과 같을 때까지 매번 1씩 감소시킵니다. 1보다 작습니다. 그런 다음 변수 product를 정의합니다. 스택의 length() 메서드를 사용하여 0보다 큰지 확인하고 매번 product* = s.pop()을 실행합니다. pop() 메서드는 스택의 최상위 요소를 반환하고 삭제합니다. 스택의 요소입니다. 따라서 실행될 때마다 s.length()

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











C++의 기계 학습 알고리즘이 직면하는 일반적인 과제에는 메모리 관리, 멀티스레딩, 성능 최적화 및 유지 관리 가능성이 포함됩니다. 솔루션에는 스마트 포인터, 최신 스레딩 라이브러리, SIMD 지침 및 타사 라이브러리 사용은 물론 코딩 스타일 지침 준수 및 자동화 도구 사용이 포함됩니다. 실제 사례에서는 Eigen 라이브러리를 사용하여 선형 회귀 알고리즘을 구현하고 메모리를 효과적으로 관리하며 고성능 행렬 연산을 사용하는 방법을 보여줍니다.

C++정렬 함수의 맨 아래 계층은 병합 정렬을 사용하고 복잡도는 O(nlogn)이며 빠른 정렬, 힙 정렬 및 안정 정렬을 포함한 다양한 정렬 알고리즘 선택을 제공합니다.

Java에서 복잡한 데이터 구조를 사용할 때 Comparator는 유연한 비교 메커니즘을 제공하는 데 사용됩니다. 구체적인 단계에는 비교기 클래스 정의, 비교 논리를 정의하기 위한 비교 메서드 재작성 등이 포함됩니다. 비교기 인스턴스를 만듭니다. Collections.sort 메서드를 사용하여 컬렉션 및 비교기 인스턴스를 전달합니다.

01 전망 요약 현재로서는 탐지 효율성과 탐지 결과 간의 적절한 균형을 이루기가 어렵습니다. 우리는 광학 원격 탐사 이미지에서 표적 감지 네트워크의 효과를 향상시키기 위해 다층 특징 피라미드, 다중 감지 헤드 전략 및 하이브리드 주의 모듈을 사용하여 고해상도 광학 원격 감지 이미지에서 표적 감지를 위한 향상된 YOLOv5 알고리즘을 개발했습니다. SIMD 데이터 세트에 따르면 새로운 알고리즘의 mAP는 YOLOv5보다 2.2%, YOLOX보다 8.48% 우수하여 탐지 결과와 속도 간의 균형이 더 잘 이루어졌습니다. 02 배경 및 동기 원격탐사 기술의 급속한 발전으로 항공기, 자동차, 건물 등 지구 표면의 많은 물체를 묘사하기 위해 고해상도 광학 원격탐사 영상이 활용되고 있다. 원격탐사 이미지 해석에서 물체 감지

1. 58초상화 플랫폼 구축 배경 먼저, 58초상화 플랫폼 구축 배경에 대해 말씀드리겠습니다. 1. 기존 프로파일링 플랫폼의 전통적인 사고로는 더 이상 충분하지 않습니다. 사용자 프로파일링 플랫폼을 구축하려면 여러 비즈니스 라인의 데이터를 통합하여 정확한 사용자 초상화를 구축하는 데이터 웨어하우스 모델링 기능이 필요합니다. 그리고 알고리즘 측면의 기능을 제공해야 하며, 마지막으로 사용자 프로필 데이터를 효율적으로 저장, 쿼리 및 공유하고 프로필 서비스를 제공할 수 있는 데이터 플랫폼 기능도 있어야 합니다. 자체 구축한 비즈니스 프로파일링 플랫폼과 중간 사무실 프로파일링 플랫폼의 주요 차이점은 자체 구축한 프로파일링 플랫폼이 단일 비즈니스 라인에 서비스를 제공하고 필요에 따라 사용자 정의할 수 있다는 것입니다. 모델링하고 보다 일반적인 기능을 제공합니다. 2.58 Zhongtai 초상화 구성 배경의 사용자 초상화

데이터 구조와 알고리즘은 Java 개발의 기초입니다. 이 기사에서는 Java의 주요 데이터 구조(예: 배열, 연결 목록, 트리 등)와 알고리즘(예: 정렬, 검색, 그래프 알고리즘 등)을 자세히 살펴봅니다. 이러한 구조는 배열을 사용하여 점수를 저장하고, 연결된 목록을 사용하여 쇼핑 목록을 관리하고, 스택을 사용하여 재귀를 구현하고, 대기열을 사용하여 스레드를 동기화하고, 트리 및 해시 테이블을 사용하여 빠른 검색 및 인증을 저장하는 등 실제 사례를 통해 설명됩니다. 이러한 개념을 이해하면 효율적이고 유지 관리가 가능한 Java 코드를 작성할 수 있습니다.

계산하는 것은 간단해 보이지만 실제로는 매우 어렵습니다. 야생동물 인구조사를 실시하기 위해 깨끗한 열대우림으로 이동했다고 상상해 보세요. 동물을 볼 때마다 사진을 찍어보세요. 디지털 카메라는 추적된 동물의 총 수만 기록하는데, 고유한 동물의 수에 관심이 있지만 통계가 없습니다. 그렇다면 이 독특한 동물 집단에 접근하는 가장 좋은 방법은 무엇입니까? 이 시점에서 지금부터 세기 시작하고 마지막으로 사진의 새로운 종을 목록과 비교해야 합니다. 그러나 이 일반적인 계산 방법은 최대 수십억 개의 항목에 달하는 정보에 적합하지 않은 경우가 있습니다. 인도 통계 연구소, UNL 및 싱가포르 국립 대학교의 컴퓨터 과학자들이 새로운 알고리즘인 CVM을 제안했습니다. 긴 목록에 있는 다양한 항목의 계산을 대략적으로 계산할 수 있습니다.

AVL 트리는 빠르고 효율적인 데이터 작업을 보장하는 균형 잡힌 이진 검색 트리입니다. 균형을 이루기 위해 좌회전 및 우회전 작업을 수행하고 균형을 위반하는 하위 트리를 조정합니다. AVL 트리는 높이 균형을 활용하여 노드 수에 비해 트리 높이가 항상 작게 되도록 함으로써 로그 시간 복잡도(O(logn)) 검색 작업을 달성하고 대규모 데이터 세트에서도 데이터 구조의 효율성을 유지합니다.
