Cara Membina Struktur Data Dengan Kelas ES6 JavaScript

Cara Membina Struktur Data Dengan Kelas ES6 JavaScript

Struktur data adalah aspek asas sains komputer dan pengaturcaraan, tanpa mengira bahasa yang anda gunakan. Mempunyai pengetahuan yang mendalam tentang mereka dapat membantu anda mengatur, mengurus, menyimpan, dan mengubah data dengan cekap. Mengenal pasti struktur data yang sesuai untuk kes penggunaan anda dapat meningkatkan prestasi dengan margin yang besar.





Walau bagaimanapun, JavaScript hanya dilengkapi dengan struktur data primitif seperti tatasusunan dan objek secara lalai. Tetapi dengan pengenalan kelas ECMAScript 6 (ES6), anda kini dapat membuat struktur data tersuai seperti tumpukan dan barisan dengan bantuan struktur data primitif.





cara menambah sempadan pada teks di photoshop

Struktur Data Stack

Struktur data timbunan membolehkan anda mendorong data baru ke atas data yang ada secara LIFO (last-in, first-out). Struktur data linier ini mudah dilihat dengan contoh yang mudah. Pertimbangkan timbunan pinggan yang disimpan di atas meja. Anda hanya boleh menambah atau mengeluarkan pinggan dari bahagian atas timbunan.





Inilah cara anda dapat menerapkan struktur data timbunan menggunakan tatasusunan JavaScript dan Kelas ES6 :

class Stack {
constructor() {
this.data = [];
this.top = -1;
}
}

Mari kita terokai dan bina beberapa operasi yang boleh anda lakukan pada timbunan.



Operasi Tolak

Operasi tekan digunakan untuk memasukkan data baru ke dalam timbunan. Anda perlu menyampaikan data sebagai parameter sambil memanggil kaedah tekan. Sebelum memasukkan data, penunjuk atas tumpukan bertambah satu, dan data baru dimasukkan di posisi teratas.

push(data) {
this.top++;
this.data[this.top] = data;
return this.data;
}

Operasi Pop

Operasi pop digunakan untuk membuang elemen data paling atas dari timbunan. Semasa melakukan operasi ini, penunjuk atas dikurangkan sebanyak 1.





pop() {
if (this.top <0) return undefined;
const poppedTop = this.data[this.top];
this.top--;
return poppedTop;
}

Operasi Mengintip

Operasi mengintip digunakan untuk mengembalikan nilai yang ada di bahagian atas timbunan. Kerumitan masa untuk mengambil data ini adalah O (1).

Ketahui Lebih Lanjut: Apa itu Notasi Big-O?





peek() {
return this.top >= 0 ? this.data[this.top] : undefined;
}

Struktur Data Senarai Terpaut

Senarai terpaut adalah struktur data linier yang terdiri daripada banyak nod yang saling terhubung dengan bantuan penunjuk. Setiap nod dalam senarai mengandungi data dan pemboleh ubah penunjuk yang menunjuk ke simpul seterusnya dalam senarai.

Ketahui Lebih Lanjut: Pengenalan Penunjuk untuk Pengaturcara

Tidak seperti timbunan, pelaksanaan senarai terpaut dalam JavaScript memerlukan dua kelas. Kelas pertama adalah Node kelas untuk membuat nod, dan kelas kedua adalah Senarai Terpaut kelas untuk melakukan semua operasi pada senarai yang dipautkan. Penunjuk kepala menunjuk ke simpul pertama senarai terpaut, dan penunjuk ekor menunjuk ke simpul terakhir senarai terpaut.

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

Berikut adalah beberapa operasi utama yang boleh anda lakukan pada senarai terpaut:

Lampirkan Operasi

Operasi lampiran digunakan untuk menambahkan simpul baru di hujung senarai terpaut. Anda harus menyampaikan data sebagai parameter untuk memasukkan nod baru. Pertama, buat objek simpul baru menggunakan baru kata kunci dalam JavaScript.

Sekiranya senarai yang dipautkan kosong, kepala dan penunjuk ekor akan menunjuk ke nod baru. Jika tidak, hanya penunjuk ekor yang akan menunjukkan nod baru.

append(data) {
const newNode = new Node(data);
if (!this.head) {
this.head = newNode;
this.tail = newNode;
} else {
this.tail.next = newNode;
this.tail = newNode;
}
this.size++;
return this;
}

Masukkan Operasi

Untuk memasukkan simpul baru pada indeks tertentu, anda boleh menggunakan operasi sisipan. Kaedah ini mengambil dua parameter: data untuk dimasukkan dan indeks di mana ia akan dimasukkan. Dalam keadaan terburuk, kaedah ini mempunyai kerumitan waktu O (N) kerana mungkin perlu melalui keseluruhan senarai.

insert(data, index) {
if (index this.size) return undefined;
if (index === 0) {
this.head = new Node(data, this.head);
!this.tail ? (this.tail = this.head) : null;
this.size++;
return this;
}
if (index === this.size) return this.append(data);
let count = 0;
let beforeNode = this.head;
while (count !== index) {
beforeNode = beforeNode.next;
count++;
}
const newNode = new Node(data);
let afterNode = beforeNode.next;
newNode.next = afterNode;
beforeNode.next = newNode;
this.size++;
return this;
}

Padam Operasi

Operasi hapus melintasi senarai terpaut untuk mendapatkan rujukan ke simpul yang hendak dihapus dan membuang pautan simpul sebelumnya. Sama seperti operasi sisipan, operasi hapus juga mempunyai kerumitan masa O (N) dalam keadaan terburuk.

deleteNode(index) {
if (index === 0) {
const removedHead = this.head;
this.head = this.head.next;
this.size--;
this.size === 0 ? (this.tail = null) : null;
return removedHead;
}
if (index === this.size - 1) {
if (!this.head) return undefined;
let currentNode = this.head;
let newTail = currentNode;
while (currentNode.next) {
newTail = currentNode;
currentNode = currentNode.next;
}
this.tail = newTail;
this.tail.next = null;
this.size--;
this.size === 0 ? ([this.head, this.tail] = [null, null]) : null;
return currentNode;
}
if (index this.size - 1) return undefined;
let count = 0;
let beforeNode = this.head;
while (count !== index - 1) {
beforeNode = beforeNode.next;
count++;
}
const removedNode = beforeNode.next;
let afterNode = removedNode.next;
beforeNode.next = afterNode;
removedNode.next = null;
this.size--;
return removedNode;
}

Struktur Data Beratur

Struktur data barisan serupa dengan sekumpulan orang yang berdiri dalam barisan. Orang yang memasuki barisan pertama dilayan sebelum orang lain. Begitu juga, struktur data linier ini mengikuti pendekatan FIFO (first in, first out) untuk memasukkan dan membuang data. Struktur data ini dapat dibuat semula dalam JavaScript menggunakan senarai terpaut dengan cara ini:

class Queue {
constructor() {
this.front = null;
this.rear = null;
this.size = 0;
}
}

Inilah cara anda memasukkan dan membuang data dari barisan dalam JavaScript:

aplikasi untuk digunakan dengan pensel epal

Operasi Enqueue

Operasi enqueue memasukkan data baru ke dalam barisan. Semasa memanggil kaedah ini, jika struktur data antrian kosong, kedua-dua titik depan dan belakang menunjuk ke simpul yang baru dimasukkan dalam barisan. Sekiranya barisan tidak kosong, simpul baru ditambahkan ke hujung senarai dan penunjuk belakang menunjuk ke simpul ini.

enqueue(data) {
const newNode = new Node(data);
if (!this.front) {
this.front = newNode;
this.rear = newNode;
} else {
this.rear.next = newNode;
this.rear = newNode;
}
this.size++;
return this;
}

Operasi Dequeue

Operasi dequeue membuang elemen pertama dalam barisan. Semasa operasi dequeue, penunjuk kepala dipindahkan ke hadapan ke simpul kedua dalam senarai. Node kedua ini kini menjadi ketua barisan.

dequeue() {
if (!this.front) return undefined;
if (this.front === this.rear) this.rear = null;
const dequeuedNode = this.front;
this.front = this.front.next;
this.size--;
return dequeuedNode;
}

Langkah Seterusnya Selepas Struktur Data

Struktur data boleh menjadi konsep yang sukar dipahami, terutamanya jika anda baru dalam pengaturcaraan. Tetapi seperti kemahiran lain, latihan dapat membantu anda benar-benar memahami dan menghargai kecekapan yang diberikannya untuk menyimpan dan mengurus data dalam aplikasi anda.

Algoritma sama bermanfaatnya dengan struktur data dan boleh menjadi langkah logik seterusnya dalam perjalanan pengaturcaraan anda. Jadi, mengapa tidak bermula dengan algoritma penyortiran seperti penyusun gelembung?

Berkongsi Berkongsi Tweet E-mel Pengenalan Algoritma Bubble Sort

Algoritma Bubble Sort: pengenalan yang sangat baik untuk menyusun tatasusunan.

Baca Seterusnya
Topik-topik yang berkaitan
  • Pengaturcaraan
  • JavaScript
  • Pengaturcaraan
  • Tutorial Pengekodan
Mengenai Pengarang Nitin Ranganath(31 Artikel Diterbitkan)

Nitin adalah pembangun perisian yang gemar dan pelajar kejuruteraan komputer yang mengembangkan aplikasi web menggunakan teknologi JavaScript. Dia bekerja sebagai pembangun web bebas dan suka menulis untuk Linux dan Pengaturcaraan pada masa lapang.

Lagi Dari Nitin Ranganath

Langgan buletin kami

Sertailah buletin kami untuk mendapatkan petua, ulasan, ebook percuma, dan tawaran eksklusif!

Klik di sini untuk melanggan