JavaScript ES6 Sınıfları ile Veri Yapıları Nasıl Oluşturulur

JavaScript ES6 Sınıfları ile Veri Yapıları Nasıl Oluşturulur

Veri yapıları, kullandığınız dilden bağımsız olarak bilgisayar bilimi ve programlamanın temel bir yönüdür. Bunlar hakkında kapsamlı bilgiye sahip olmak, verileri verimli bir şekilde organize etmenize, yönetmenize, depolamanıza ve değiştirmenize yardımcı olabilir. Kullanım durumunuz için uygun veri yapısını belirlemek, performansı büyük bir farkla artırabilir.





Ancak JavaScript, varsayılan olarak yalnızca diziler ve nesneler gibi ilkel veri yapılarıyla birlikte gelir. Ancak ECMAScript 6 (ES6) sınıflarının tanıtılmasıyla, artık ilkel veri yapılarının yardımıyla yığınlar ve kuyruklar gibi özel veri yapıları oluşturabilirsiniz.





kodu beklenmedik çekirdek modu tuzağını durdur

Yığın Veri Yapısı

Yığın veri yapısı, yeni verileri LIFO (son giren ilk çıkar) tarzında mevcut verilerin üzerine göndermenize izin verir. Bu doğrusal veri yapısının basit bir örnek kullanılarak görselleştirilmesi kolaydır. Bir masanın üzerinde tutulan bir tabak yığınını düşünün. Yalnızca yığının üstünden bir plaka ekleyebilir veya kaldırabilirsiniz.





JavaScript dizilerini kullanarak yığın veri yapısını nasıl uygulayabileceğiniz aşağıda açıklanmıştır ve ES6 sınıfları :

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

Bir yığın üzerinde gerçekleştirebileceğiniz bazı işlemleri keşfedip oluşturalım.



İtme İşlemi

İtme işlemi, yığına yeni veri eklemek için kullanılır. Push yöntemini çağırırken verileri parametre olarak iletmeniz gerekir. Verileri eklemeden önce, yığının en üstteki işaretçisi birer birer artırılır ve yeni veriler en üst konuma eklenir.

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

Pop İşlemi

Pop işlemi, yığının en üstteki veri öğesini kaldırmak için kullanılır. Bu işlem yapılırken üst imleç 1 küçülür.





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

Göz Atma İşlemi

Peek işlemi, yığının en üstünde bulunan değeri döndürmek için kullanılır. Bu verileri almak için zaman karmaşıklığı O(1)'dir.

Daha fazla bilgi edin: Big-O Notasyonu Nedir?





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

Bağlantılı Liste Veri Yapısı

Bağlantılı liste, işaretçiler yardımıyla birbirine bağlanan çok sayıda düğümden oluşan doğrusal bir veri yapısıdır. Listedeki her düğüm, verileri ve listedeki bir sonraki düğüme işaret eden bir işaretçi değişkenini içerir.

Daha Fazla Bilgi Edinin: Programcılar için İşaretçilere Giriş

Bir yığından farklı olarak, JavaScript'teki bağlantılı liste uygulamaları iki sınıf gerektirir. Birinci sınıf, düğüm düğüm oluşturmak için sınıf ve ikinci sınıf Bağlantılı liste bağlantılı listedeki tüm işlemleri gerçekleştirmek için sınıf. Baş işaretçi, bağlantılı listenin ilk düğümünü ve kuyruk işaretçisi, bağlantılı listenin son düğümünü gösterir.

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

Bağlantılı bir listede gerçekleştirebileceğiniz bazı birincil işlemler şunlardır:

Ekleme İşlemi

Ekleme işlemi, bağlantılı listenin sonuna yeni bir düğüm eklemek için kullanılır. Yeni bir düğüm eklemek için verileri parametre olarak iletmeniz gerekir. İlk olarak, kullanarak yeni bir düğüm nesnesi oluşturun. yeni JavaScript'te anahtar kelime.

Bağlantılı liste boşsa, hem baş hem de kuyruk işaretçisi yeni düğümü gösterecektir. Aksi takdirde, yalnızca kuyruk işaretçisi yeni düğümü gösterecektir.

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

Ekleme İşlemi

Belirli bir dizine yeni bir düğüm eklemek için ekleme işlemini kullanabilirsiniz. Bu yöntem iki parametre alır: eklenecek veri ve eklenecek dizin. En kötü durumda, bu yöntemin zaman karmaşıklığı O(N)'dir, çünkü tüm listeyi geçmek zorunda kalabilir.

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

İşlemi Sil

Silme işlemi, silinecek düğüme referans almak için bağlantılı listeden geçer ve önceki düğümün bağlantısını kaldırır. Ekleme işlemine benzer şekilde, silme işlemi de en kötü durumda O(N) zaman karmaşıklığına sahiptir.

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

Kuyruk Veri Yapısı

Kuyruk veri yapısı, kuyrukta bekleyen bir grup insana benzer. Kuyruğa ilk giren kişiye diğerlerinden önce servis yapılır. Benzer şekilde, bu doğrusal veri yapısı, veri eklemek ve çıkarmak için FIFO (ilk giren ilk çıkar) yaklaşımını izler. Bu veri yapısı JavaScript'te bağlantılı bir liste kullanılarak şu şekilde yeniden oluşturulabilir:

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

JavaScript'te bir kuyruğa nasıl veri ekleyebileceğiniz ve kaldırabileceğiniz aşağıda açıklanmıştır:

görev yöneticisi, yöneticiniz tarafından devre dışı bırakıldı Windows 10

Sıraya Alma İşlemi

Kuyruğa alma işlemi, kuyruğa yeni veriler ekler. Bu yöntem çağrılırken, kuyruk veri yapısı boşsa, hem ön hem de arka işaretçiler kuyruğa yeni eklenen düğümü işaret eder. Kuyruk boş değilse, listenin sonuna yeni düğüm eklenir ve arka işaretçi bu düğümü gösterir.

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

Kuyruktan Çıkarma İşlemi

Kuyruktan çıkarma işlemi, kuyruktaki ilk öğeyi kaldırır. Sıradan çıkarma işlemi sırasında, baş işaretçi listedeki ikinci düğüme ilerler. Bu ikinci düğüm artık kuyruğun başı olur.

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

Veri Yapılarından Sonraki Adım

Veri yapıları, özellikle programlama konusunda yeniyseniz, kavraması zor bir kavram olabilir. Ancak diğer beceriler gibi, uygulama da uygulamalarınızdaki verileri depolamak ve yönetmek için sağladığı verimliliği gerçekten anlamanıza ve takdir etmenize yardımcı olabilir.

Algoritmalar, veri yapıları kadar faydalıdır ve programlama yolculuğunuzda bir sonraki mantıklı adım olabilir. Öyleyse neden kabarcık sıralama gibi bir sıralama algoritması ile başlamıyorsunuz?

Paylaş Paylaş Cıvıldamak E-posta Kabarcık Sıralama Algoritmasına Giriş

Kabarcık Sıralama algoritması: dizileri sıralamaya mükemmel bir giriş.

Sonrakini Oku
İlgili konular
  • Programlama
  • JavaScript
  • Programlama
  • Kodlama Eğitimleri
Yazar hakkında Nitin Ranganath(31 Makale Yayınlandı)

Nitin, JavaScript teknolojilerini kullanarak web uygulamaları geliştiren hevesli bir yazılım geliştiricisi ve bilgisayar mühendisliği öğrencisidir. Serbest web geliştiricisi olarak çalışıyor ve boş zamanlarında Linux ve Programlama için yazmayı seviyor.

Nitin Ranganath'dan Daha Fazla

Haber bültenimize abone ol

Teknik ipuçları, incelemeler, ücretsiz e-kitaplar ve özel fırsatlar için bültenimize katılın!

Abone olmak için buraya tıklayın