0Pricing
Zig Academy · Ders

Sıfırdan Genel Amaçlı Yığın

Bir ayırıcı üzerinde tür parametreli LIFO.

Sıfırdan Genel Amaçlı Yığın, CoddyKit'te ücretsiz bir Zig Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Zig Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Zig Academy kursu toplamda 4 dersten oluşur.

Stack Ne İşe Yarar

Bir stack, LIFO düzeninde çalışan bir koleksiyondur: push ettiğiniz son öğe, pop ettiğiniz ilk öğedir. Tezgâhın üzerine üst üste dizilmiş tabakları düşünün. 🍽️

Genel Hâle Getirme

Herhangi bir öğe türünü tutmak için bir tür alan ve bir struct türü döndüren bir işlev yazın. Her çağrı, o türe göre uyarlanmış bir yığın sağlar.

fn Stack(comptime T: type) type {
    return struct {};
}

Öğeleri ve Ayırıcıyı Saklama

İçerideki yapı, büyüyebilen bir öğe diliminin yanı sıra belleği ödünç aldığı allocator değerini de tutar. Zig, bellek ayırma işlemlerini hiçbir zaman gizlemez.

return struct {
    items: []T,
    len: usize,
    alloc: std.mem.Allocator,
};

@This ile Yapıya Başvurma

Döndürülen yapı anonim olduğundan, yöntemler kendi türlerini @This() ile adlandırır. Böylece her yöntem tamamen genel kalır.

const Self = @This();

Boş Bir Yığını Başlatma

Bir init işlevi ayırıcıyı alır ve yeni, boş bir yığın döndürür. Siz push işlemi yapana kadar hiçbir bellek ayrılmaz.

fn init(a: std.mem.Allocator) Self {
    return .{ .items = &.{}, .len = 0, .alloc = a };
}

Push İşlemi Başarısız Olabilir

Tamponu büyütmek bellek gerektirebilir; bu nedenle push bir hata birleşimi döndürür. Çağıranlar bellek yetersizliği durumunu açıkça ele alır.

fn push(self: *Self, value: T) !void {
    // grow then store
}

Büyütmek İçin realloc Kullanma

Yer açmak için ayırıcıdan dilimi daha büyük bir boyuta realloc etmesini isteyin. Yeni uzunluk, büyütme politikanıza bağlıdır.

self.items = try self.alloc.realloc(self.items, self.len + 1);
self.items[self.len] = value;
self.len += 1;

En Üstteki Değeri Çıkarma

pop isteğe bağlı bir değer döndürür: yığında öğe varsa en üstteki öğeyi, yığın boşsa null değerini verir. Boş yığında çökme yaşanmaz.

fn pop(self: *Self) ?T {
    if (self.len == 0) return null;
    self.len -= 1;
    return self.items[self.len];
}

Ayırdığınız Belleği Serbest Bırakma

Tamponun sahibi siz olduğunuz için onu geri vermelisiniz. Bir deinit yöntemi, aynı ayırıcı üzerinden dilimi serbest bırakır.

fn deinit(self: *Self) void {
    self.alloc.free(self.items);
}

Kullanma

İşlevi çağırarak somut bir tür oluşturun ve ardından onu başlatın. Stack(i32), tamsayıları push etmeye hazır, gerçek ve tamamen denetlenmiş bir türdür.

var s = Stack(i32).init(allocator);
defer s.deinit();
try s.push(42);

Tek Tanım, Birçok Yığın

İşlevi farklı türlerle çağırdığınızda her biri ayrı ve özelleştirilmiş bir yığın olur. Stack(u8) ile Stack(f64) yanlışlıkla kod paylaşmaz.

Hızlı Kontrol

Genel yığınınızın büyümek için yığın belleğine ihtiyacı var. Bu bellek nereden gelir?

Özet

Genel bir yığın, öğeleri ve bir allocator değerini tutan, tür döndüren bir işlevdir. Push büyütür, pop isteğe bağlı bir değer döndürür ve deinit belleği serbest bırakır. 🎯

Sıkça Sorulan Sorular

“Sıfırdan Genel Amaçlı Yığın” dersi ücretsiz mi?

Evet — “Sıfırdan Genel Amaçlı Yığın” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Zig Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Zig Academy kursu toplamda 4 dersten oluşur.

“Sıfırdan Genel Amaçlı Yığın” dersinde ne öğreneceğim?

Bir ayırıcı üzerinde tür parametreli LIFO. Zig Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Zig Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Zig Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“Sıfırdan Genel Amaçlı Yığın” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Zig Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Zig Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Sıfırdan Genel Amaçlı Yığın
  2. Tek Bağlantılı Liste
  3. HashMap ve AutoHashMap Kullanımı
  4. Profil Oluşturma ve Güvenlik Dengeleri
← Zig Academy Sayfasına Dön