Rumah  >  Artikel  >  hujung hadapan web  >  Pelaksanaan Baris Gilir Menggunakan Javascript (Senarai Terpaut)

Pelaksanaan Baris Gilir Menggunakan Javascript (Senarai Terpaut)

WBOY
WBOYasal
2024-08-14 19:10:19278semak imbas

Queue Implementation Using Javascript (Linked List)

pengenalan

Jika anda tidak yakin atau ingin memahami lebih lanjut tentang senarai Terpaut dan jenisnya serta bagaimana kami boleh melakukan operasi pada perkara yang sama sila rujuk artikel saya yang lain berkaitan Senarai Pautan Tunggal dan Senarai Pautan Berganda

Mendekati Senarai Terpaut Tunggal dan Berganda Menggunakan Javascript Dengan Semua Operasi:- Penyelesaian Hentian Terakhir

  1. Artikel ini adalah mengenai menggunakan Senarai Pautan Tunggal dan mencipta Struktur data Gilir.

Jangan ragu untuk menghubungi saya jika anda mempunyai sebarang kebimbangan

Nikmati kod, Selamat Mengekod.

class Node {
    constructor(value) {
        this.value = value;
        this.next = null;
    }
}

class LinkedList {
    constructor() {
        this.head = this.tail = null;
        this.size = 0;
    }

    append(value){
        const newNode = new Node(value);

        if (this.head === null) {
            this.head = this.tail = newNode;
            this.size = 1;
            return ;
        }

        let currentNode = this.head;
        const pos = this.size-1;
        let counter = 0;

        while (currentNode) {
            if (counter++ === pos) {
                currentNode.next = newNode;
                this.tail = newNode;
                this.size++;
                break;
            }
            currentNode = currentNode.next;
        }
    }

    deleteFromHead() {
        if (this.head === null) {
            return ;
        }
        let currentNode = this.head;
        this.head = currentNode.next;
        this.size--;
        return this.head.value;
    }

    traversal() {
        let currentNode = this.head;

        while (currentNode) {
            console.log(currentNode.value);
            currentNode = currentNode.next;
        }
    }

    reverse(){
        let currentNode = this.head;
        let nextNode = null;
        let prevNode = null;

        while(currentNode) {
            nextNode = currentNode.next;
            currentNode.next = prevNode;
            if (prevNode === null) {
                this.tail = prevNode;
            }
            prevNode = currentNode;
            currentNode = nextNode;
        }

        this.head = prevNode;
        this.traversal();
    }


}


class Queue{
    queue;
    constructor() {
        this.queue = new LinkedList();
    }

    push(value) {
        this.queue.append(value)
    }

    pop() {
        this.queue.deleteFromHead();
    }

    peak() {
        console.log(this.queue.head.value)
    }

    traversal() {
        this.queue.traversal()
    }
    reverse() {
        this.queue.reverse();
    }
}


const q = new Queue();

q.push(20);
q.push(13);
q.push(3);
q.push(5);
q.push(9);

q.pop()
console.log(q);
q.traversal()
console.log('---------------Peak--------------')
q.peak()
console.log('-------------After Reverse ---------------');
q.reverse()

/*
Queue {
  queue: LinkedList {
    tail: Node { value: 9, next: null },
    head: Node { value: 13, next: [Node] },
    size: 4
  }
}
13
3
5
9
---------------Peak--------------
13
-------------After Reverse ---------------
9
5
3
13
*/

Atas ialah kandungan terperinci Pelaksanaan Baris Gilir Menggunakan Javascript (Senarai Terpaut). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Redis 2Artikel seterusnya:Redis 2