다음은 LinkedList 클래스의 완전한 구현입니다. 예시 class LinkedList { constructor() { this.head = null; this.length = 0; } insert(data, position = this.length) { let node = new this.Node(data);
이중 연결 목록은 모든 작업에서 단일 연결 목록과 거의 동일하므로 노드당 하나의 추가 연결만 추적하면 됩니다. 단일 연결 목록에는 다음 링크만 있고 이중 연결 목록에는 다음과 이전의 2개의 링크가 있습니다. 이중 연결 목록은 −로 표시됩니다. 클래스 자체에서 꼬리(마지막 요소)도 추적해야 합니다.
머리와 꼬리를 null로 초기화하는 생성자로 간단한 클래스를 정의하는 것으로 시작하겠습니다. 또한 연결 목록의 각 노드를 나타내는 DoublyLinkedList 클래스의 프로토타입에 다른 구조를 정의합니다. 예시 class LinkedList { constructor() { this.head = null; this.tail = null; this.length = 0; } }
연결 리스트의 주어진 위치에 데이터를 삽입하는 insert(data, position) 함수를 만들어야 합니다. 다음 단계를 수행합니다 - 새 노드 생성 목록이 비어 있는지 확인합니다. 그러면 head와 tail에 노드를 추가하고 반환합니다. 그렇지 않은 경우 currElem을 사용하여 삽입하려는 위치로 반복합니다. currElem을 currElem.next와 동일하게 만들어 연결 목록을 반복합니다. 이제 다음과 같은 방식으로 링크를 변경합니다 - 목록의 다음 노드를 가리키는 새 노드 만들기 다음 노드의 이전 지점을 새 노드
컨테이너 요소를 빈 배열에 재할당하여 내용을 지울 수 있습니다. 예를 들어, clear() { this.container = []; } 예시 다음을 사용하여 이 기능이 제대로 작동하는지 확인할 수 있습니다. let q = new Queue(2); q.enqueue(3); q.enqueue(4); q.display(); q.clear(); q.display(); 출력 이 결과는 다음과 같습니다. [ 3, 4 ] [ ]
다음은 Queue 클래스의 완전한 구현입니다. 예시 class Queue { constructor(maxSize) { // Set default max size if not provided if (isNaN(maxSize)) { maxSize = 10; } this.maxSize = maxSize;
우선 순위 대기열은 일반 대기열 또는 스택 데이터 구조와 비슷하지만 추가로 각 요소에 연결된 우선 순위가 있는 추상 데이터 유형입니다. 우선 순위 대기열에서 우선 순위가 높은 요소가 우선 순위가 낮은 요소보다 먼저 제공됩니다. 두 요소의 우선 순위가 같으면 대기열의 순서에 따라 제공됩니다. 우선순위 큐를 구현하는 방법에는 여러 가지가 있습니다. 배열을 사용하여 구현하겠습니다.
우리 수업에는 다음 기능이 있습니다 - enqueue(element):대기열에 요소를 추가하는 함수입니다. dequeue():대기열에서 요소를 제거하는 함수입니다. peek():대기열의 맨 앞에서 요소를 반환합니다. isFull():대기열의 요소 제한에 도달했는지 확인합니다. isEmpty():대기열이 비어 있는지 확인합니다. clear():모든 요소를 제거합니다. display():배열의 모든 내용을 표시 큐의 최대 크기를 취하는 생성자와 이 클래스에 대한 다른 함수를 구현할 때 도움이 되는 도우미 함수를 사용하여 간단한
PriorityQueue에 요소를 추가한다는 것은 요소의 우선 순위에 따라 배열에 추가하는 것을 의미합니다. 더 높은 숫자를 더 높은 우선 순위로 간주합니다. 더 낮은 우선 순위를 찾을 때까지 컨테이너를 반복한 다음 거기에 요소를 추가합니다. 그렇지 않은 경우 컨테이너 끝에서 푸시합니다. 데이터 및 우선 순위를 사용하여 요소 개체를 생성하고 있음에 유의하십시오. 따라서 우리는 다음과 같이 enqueue 기능을 구현할 수 있습니다 - 예시 enqueue(data, priority) { // Check if Q
PriorityQueue에서 요소를 대기열에서 빼는 것은 우선 순위가 가장 높은 요소를 제거하는 것을 의미합니다. 우리는 배열의 끝에 가장 높은 우선 순위를 가진 요소를 저장하고 있습니다. 간단히 팝하여 큐에서 빼낼 수 있습니다. 따라서 다음과 같이 대기열에서 빼기 기능을 구현할 수 있습니다. - 예시 dequeue() { // Check if empty if (this.isEmpty()) { console.log("Queue Und
PriorityQueue를 엿본다는 것은 제거하지 않고 우선 순위가 가장 높은 값을 가져오는 것을 의미합니다. 따라서 다음과 같이 엿보기 기능을 구현할 수 있습니다. &minusl 예시 peek() { if (isEmpty()) { console.log("Queue Underflow!"); return; } return this.container[this.containe
컨테이너 요소를 빈 배열에 재할당하여 내용을 지울 수 있습니다. 예를 들어, clear() { this.container = []; } 예시 − 를 사용하여 이 기능이 제대로 작동하는지 확인할 수 있습니다. let q = new PriorityQueue(4); q.enqueue("Hello", 3); q.enqueue("World", 2); q.enqueue("Foo", 8); q.display(); q.clear(); q.display(); 출력 이
다음은 PriorityQueue 클래스의 완전한 구현입니다 - 예시 class PriorityQueue { constructor(maxSize) { // Set default max size if not provided if (isNaN(maxSize)) { maxSize = 10; } th
연결 목록은 링크를 통해 함께 연결된 일련의 데이터 구조입니다. 연결 목록은 항목을 포함하는 링크의 시퀀스입니다. 각 링크에는 다른 링크에 대한 연결이 포함됩니다. 가장 많이 사용되는 데이터 구조 중 하나입니다. 연결 목록을 만들 때 사용할 용어가 있습니다. 노드: 이것은 연결 목록의 각 요소를 나타냅니다. 데이터 및 다음의 2개 부분으로 구성됩니다. Data는 저장하려는 데이터를 포함하고 next는 목록의 다음 요소에 대한 참조를 포함합니다. 링크: 각 다음 참조는 링크입니다. 하 읽기: 첫 번째 요소에 대한 참조가 앞서
작은 도우미 기능이 거의 없는 Javascript의 다음 스택 클래스를 고려하십시오. 예시 class Stack { constructor(maxSize) { // Set default max size if not provided if (isNaN(maxSize)) { maxSize = 10; } thi
Javascript의 간단한 스택 클래스를 고려하십시오. 예시 class Stack { constructor(maxSize) { // Set default max size if not provided if (isNaN(maxSize)) { maxSize = 10; } this.maxSize = maxS
Javascript의 간단한 스택 클래스를 고려하십시오. 예시 class Stack { constructor(maxSize) { // Set default max size if not provided if (isNaN(maxSize)) { maxSize = 10; } this.maxSize = max
Javascript의 간단한 스택 클래스를 고려하십시오. 예시 class Stack { constructor(maxSize) { // Set default max size if not provided if (isNaN(maxSize)) { maxSize = 10; } this.maxSize = max
다음은 Stack 클래스의 완전한 구현입니다 - 예시 class Stack { constructor(maxSize) { // Set default max size if not provided if (isNaN(maxSize)) { maxSize = 10; } this.maxSize = maxSize; // Init an array that
대기열은 스택과 다소 유사한 추상 데이터 구조입니다. 스택과 달리 큐는 양쪽 끝이 열려 있습니다. 한쪽 끝은 항상 데이터를 삽입(인큐)하는 데 사용하고 다른 쪽 끝은 데이터를 제거(디큐)하는 데 사용됩니다. 대기열은 선입선출 방식을 따릅니다. 즉, 먼저 저장된 데이터 항목이 먼저 액세스됩니다. 대기열의 실제 예는 차량이 먼저 들어오고 먼저 나가는 1차선 일방통행 도로일 수 있습니다. 다음 다이어그램은 대기열이 작동하는 방식을 보여줍니다 -