Cara Membangun Struktur Data Dengan Kelas JavaScript ES6

Cara Membangun Struktur Data Dengan Kelas JavaScript ES6

Struktur data adalah aspek mendasar dari ilmu komputer dan pemrograman, terlepas dari bahasa yang Anda gunakan. Memiliki pengetahuan menyeluruh tentang mereka dapat membantu Anda mengatur, mengelola, menyimpan, dan memodifikasi data secara efisien. Mengidentifikasi struktur data yang tepat untuk kasus penggunaan Anda dapat meningkatkan kinerja dengan margin yang sangat besar.





Namun, JavaScript hanya hadir dengan struktur data primitif seperti array dan objek secara default. Tetapi dengan pengenalan kelas ECMAScript 6 (ES6), Anda sekarang dapat membuat struktur data khusus seperti tumpukan dan antrian dengan bantuan struktur data primitif.





bagaimana cara menghapus akun hotmail saya?

Struktur Data Tumpukan

Struktur data tumpukan memungkinkan Anda untuk mendorong data baru di atas data yang ada dengan cara LIFO (masuk terakhir, keluar pertama). Struktur data linier ini mudah divisualisasikan menggunakan contoh sederhana. Pertimbangkan setumpuk piring yang disimpan di atas meja. Anda dapat menambah atau menghapus piring dari bagian atas tumpukan saja.





Inilah cara Anda dapat mengimplementasikan struktur data tumpukan menggunakan larik JavaScript dan kelas ES6 :

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

Mari kita jelajahi dan bangun beberapa operasi yang dapat Anda lakukan di tumpukan.



Operasi Dorong

Operasi push digunakan untuk memasukkan data baru ke dalam stack. Anda harus meneruskan data sebagai parameter saat memanggil metode push. 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 menghapus elemen data paling atas dari stack. Saat melakukan operasi ini, penunjuk atas dikurangi 1.





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

Operasi Intip

Operasi mengintip digunakan untuk mengembalikan nilai yang ada di bagian atas tumpukan. Kompleksitas waktu untuk mengambil data ini adalah O(1).

Belajarlah lagi: Apa itu Notasi Big-O?





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

Struktur Data Daftar Tertaut

Daftar tertaut adalah struktur data linier yang terdiri dari banyak simpul yang terhubung satu sama lain dengan bantuan pointer. Setiap node dalam daftar berisi data dan variabel pointer yang menunjuk ke node berikutnya dalam daftar.

Pelajari Lebih Lanjut: Pengantar Pointer untuk Pemrogram

Tidak seperti tumpukan, implementasi daftar tertaut dalam JavaScript memerlukan dua kelas. Kelas pertama adalah simpul kelas untuk membuat simpul, dan kelas kedua adalah Daftar Tertaut kelas untuk melakukan semua operasi pada daftar tertaut. Penunjuk kepala menunjuk ke simpul pertama dari daftar tertaut, dan penunjuk ekor menunjuk ke simpul terakhir dari daftar tertaut.

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 dapat Anda lakukan pada daftar tertaut:

Tambahkan Operasi

Operasi append digunakan untuk menambahkan node baru ke akhir linked list. Anda harus melewatkan data sebagai parameter untuk menyisipkan node baru. Pertama, buat objek simpul baru menggunakan baru kata kunci dalam JavaScript.

Jika daftar tertaut kosong, penunjuk kepala dan ekor akan menunjuk ke simpul baru. Jika tidak, hanya penunjuk ekor yang akan menunjuk ke simpul 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;
}

Operasi Sisipkan

Untuk menyisipkan simpul baru pada indeks tertentu, Anda dapat menggunakan operasi penyisipan. Metode ini membutuhkan dua parameter: data yang akan disisipkan dan indeks yang akan disisipkan. Dalam kasus terburuk, metode ini memiliki kompleksitas waktu O(N) karena mungkin harus melintasi seluruh daftar.

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;
}

Hapus Operasi

Operasi hapus melintasi daftar tertaut untuk mendapatkan referensi ke simpul yang akan dihapus dan menghapus tautan dari simpul sebelumnya. Mirip dengan operasi penyisipan, operasi penghapusan juga memiliki kompleksitas waktu O(N) dalam kasus 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 Antrian

Struktur data antrian mirip dengan sekelompok orang yang berdiri dalam antrian. Orang yang masuk antrian terlebih dahulu dilayani sebelum orang lain. Demikian pula, struktur data linier ini mengikuti pendekatan FIFO (masuk pertama, keluar pertama) untuk memasukkan dan menghapus data. Struktur data ini dapat dibuat kembali dalam JavaScript menggunakan daftar tertaut dengan cara ini:

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

Berikut cara menyisipkan dan menghapus data dari antrean di JavaScript:

cara memasukkan iphone 8 ke mode pemulihan

Operasi Antrian

Operasi enqueue memasukkan data baru ke dalam antrian. Saat memanggil metode ini, jika struktur data antrian kosong, pointer depan dan belakang menunjuk ke node yang baru dimasukkan dalam antrian. Jika antrian tidak kosong, simpul baru ditambahkan ke akhir daftar 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 menghapus elemen pertama dalam antrian. Selama operasi dequeue, penunjuk kepala dipindahkan ke depan ke simpul kedua dalam daftar. Node kedua ini sekarang menjadi kepala antrian.

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 Selanjutnya Setelah Struktur Data

Struktur data bisa menjadi konsep yang rumit untuk dipahami, terutama jika Anda baru dalam pemrograman. Namun seperti keterampilan lainnya, latihan dapat membantu Anda benar-benar memahami dan menghargai efisiensi yang diberikannya untuk menyimpan dan mengelola data dalam aplikasi Anda.

Algoritma sama bergunanya dengan struktur data dan bisa menjadi langkah logis berikutnya dalam perjalanan pemrograman Anda. Jadi, mengapa tidak memulai dengan algoritma pengurutan seperti bubble sort?

Membagikan Membagikan Menciak Surel Pengantar Algoritma Bubble Sort

Algoritma Bubble Sort: pengenalan yang sangat baik untuk mengurutkan array.

Baca Selanjutnya
Topik-topik yang berkaitan
  • Pemrograman
  • JavaScript
  • Pemrograman
  • Tutorial Pengkodean
Tentang Penulis Nitin Ranganath(31 Artikel Diterbitkan)

Nitin adalah pengembang perangkat lunak yang rajin dan mahasiswa teknik komputer yang mengembangkan aplikasi web menggunakan teknologi JavaScript. Dia bekerja sebagai pengembang web lepas dan suka menulis untuk Linux dan Pemrograman di waktu luangnya.

More From Nitin Ranganath

Berlangganan newsletter kami

Bergabunglah dengan buletin kami untuk kiat teknologi, ulasan, ebook gratis, dan penawaran eksklusif!

Klik di sini untuk berlangganan