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 SortAlgoritma Bubble Sort: pengenalan yang sangat baik untuk mengurutkan array.
Baca Selanjutnya Topik-topik yang berkaitan- Pemrograman
- JavaScript
- Pemrograman
- Tutorial Pengkodean
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 RanganathBerlangganan newsletter kami
Bergabunglah dengan buletin kami untuk kiat teknologi, ulasan, ebook gratis, dan penawaran eksklusif!
Klik di sini untuk berlangganan