Rumah  >  Artikel  >  hujung hadapan web  >  Program JavaScript memadamkan nod dengan nilai yang lebih besar di sebelah kanan

Program JavaScript memadamkan nod dengan nilai yang lebih besar di sebelah kanan

WBOY
WBOYke hadapan
2023-09-10 13:49:021156semak imbas

JavaScript 程序删除右侧具有更大值的节点

Kami akan melaksanakan fungsi untuk memadamkan nod dengan nilai yang lebih besar di sebelah kanan senarai terpaut. Kaedahnya adalah untuk melintasi senarai terpaut dari kanan ke kiri dan menjejaki nilai maksimum yang ditemui setakat ini. Untuk setiap nod, kami membandingkan nilainya dengan nilai maksimum dan memadamkan nod jika nilainya kurang daripada nilai maksimum. Dengan cara ini, semua nod di sebelah kanan yang lebih besar daripada nilai maksimum akan dipadamkan.

Kaedah

Kaedah memadam nod dengan nilai yang lebih besar di sebelah kanan boleh dibahagikan kepada 7 langkah berikut:

  • Lintas senarai terpaut dari awal hingga akhir.

  • Jejaki nod semasa, nod sebelumnya dan nilai maksimum yang dilihat setakat ini.

  • Jika nilai nod semasa kurang daripada nilai maksimum yang dilihat setakat ini, padamkan nod semasa dengan mengemas kini penuding seterusnya nod sebelumnya.

  • Kemas kini nilai maksimum yang dilihat pada masa ini kepada nilai nod semasa.

  • Alihkan nod semasa ke nod seterusnya.

  • Ulang langkah 3 hingga 5 sehingga anda sampai ke penghujung senarai terpaut.

  • Mengembalikan kepala senarai terpaut yang dikemas kini.

Contoh

Memandangkan senarai pautan tunggal, tugasnya adalah untuk memadamkan nod dengan nilai yang lebih besar di sebelah kanan. Ideanya adalah untuk melelakan senarai dari kanan ke kiri dan menjejaki nilai maksimum yang dilihat setakat ini. Semasa kami mengulangi senarai, kami mengalih keluar nod dengan nilai kurang daripada nilai maksimum yang dilihat setakat ini.

Ini ialah pelaksanaan dalam JavaScript -

class Node {
  constructor(value) {
    this.value = value;
    this.next = null;
  }
}
class LinkedList {
  constructor() {
    this.head = null;
  }
  // Add a new node to the linked list
  add(value) {
    const node = new Node(value);
    if (!this.head) {
      this.head = node;
      return;
    }
    let current = this.head;
    while (current.next) {
      current = current.next;
    }
    current.next = node;
  }
  // Function to delete nodes with greater value on right
  deleteNodes() {
    let prev = null;
    let current = this.head;
    let max = this.head.value;
    // Traverse the linked list from right to left
    while (current.next) {
      // If the current node has a greater value than the max value seen so far
      if (current.next.value > max) {
        max = current.next.value;
        prev = current;
      } else {
        // Delete the node with smaller value
        prev.next = current.next;
      }
      current = current.next;
    }
    // If the last node has a smaller value than the max value seen so far
    if (this.head.value < max) {
      this.head = this.head.next;
    }
  }
}
// Test the code
const linkedList = new LinkedList();
linkedList.add(12);
linkedList.add(15);
linkedList.add(10);
linkedList.add(11);
linkedList.add(5);
linkedList.add(6);
linkedList.add(2);
linkedList.add(3);
linkedList.deleteNodes();
let current = linkedList.head;
while (current) {
  console.log(current.value);
  current = current.next;
}

Arahan

  • Pertama, kami mencipta kelas senarai terpaut, yang mengandungi kelas Nod untuk mentakrifkan setiap nod dalam senarai terpaut.

  • Dalam kelas LinkedList kita mempunyai fungsi add() untuk menambah nod baharu pada senarai.

  • Fungsi
  • deleteNodes() melaksanakan logik memadamkan nod dengan nilai yang lebih besar di sebelah kanan.

  • Kami merentasi senarai dari kanan ke kiri, menjejaki nilai maksimum yang dilihat setakat ini.

  • Jika nilai nod semasa lebih besar daripada nilai maksimum, kami mengemas kini nilai maksimum.

  • Jika nilai nod semasa kurang daripada nilai maksimum, kami memadamkan nod dengan mengemas kini rujukan next nod sebelumnya untuk menunjuk ke nod di sebelah nod semasa.

  • Akhir sekali, jika nilai nod pertama kurang daripada nilai maksimum, kami mengemas kini rujukan pengepala untuk menghala ke nod di sebelah nod pertama.

  • Senarai terpaut selepas memadamkan nod hanya akan mengandungi nod dengan nilai berikut:

Atas ialah kandungan terperinci Program JavaScript memadamkan nod dengan nilai yang lebih besar di sebelah kanan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam