Stack ve Queue Sınıflarının Kullanılması - 2

.NET programcılığı Stack ve Queue Sınıflarının Kullanılması - 2 Programlama Dilleri hakkında bilgi paylaş; Stack Veri Yapısı Stack; LIFO (Last In First Out) ilkesine göre çalışan bir kuyruk sistemidir. FIFO kuyruk ...
Cevapla
WebMasTer SiTeSi
 
Seçenekler
  #1  
Arama 24-01-2008, 01:56
Banlı
Üyelik Tarihi: 18/09/07
Mesajlar: 1.551
 
     WS-Ticareti: (1)
Blog Yazıları: 1
Teşekkürleri: 0
20 Msg. 27 Tşkr.
Rep Gücü: 0 B737 rep gücü epey yüksek

Stack ve Queue Sınıflarının Kullanılması - 2

Stack Veri Yapısı

Stack; LIFO (Last In First Out) ilkesine göre çalışan bir kuyruk sistemidir. FIFO kuyruk sisteminden farklı olarak, stack'e girilen ilk eleman stack 'ten en son alınır, buna karşın son girilen eleman ise ilk alınır. Buna gerçek hayattan bir örnek vermek gerekirse: bir rafa, n tane tabağı üst üste koyduğumuzu düşünelim, ilk alacağımız tabak son koyduğumuz, son alacağımız tabak ise ilk koyduğumuz tabak olacaktır. Aşağıda, elemanların stack'e giriş ve çıkışı gösterilmiştir.



Programcılıkta ters sırada çalışılan uygulamalarda stack sistemleri sıklıkla kullanılmaktadır. Örneğin undo işlemlerinin yönetiminde olduğu gibi.

Stack Sınıfı

.NET Framework class library 'de; stack veri yapısının oluşturulması ve işlenmesi amacı ile tasarlanmış "Stack" isimli bir sınıf bulunmaktadır. Bu sınıf; programcıyı bir takım aşağı seviyeli işlemleri yapma zahmetinden kurtararak, kolay bir şekilde, stack yapısı oluşturma ve bu yapı üzerinde çeşitli işlemleri gerçekleştirme amacı ile tasarlanmıştır.

Stack Yapısının Oluşturulması

Bir stack yapısı üzerinde çalışabilmek için, öncelikle bellekte öngörülen sayıdaki elemana uygun büyüklükte bir alanın tahsis edilmesi gerekir. Bu işlem Stack sınıfının constructor 'ı kullanılarak nesne türetildiğinde otomatik olarak gerçekleştirilmektedir. Ayrıca constructor; başlangıçta öngörülen eleman sayısından daha fazla sayıda elemanın stack 'e eklenmesi durumunda oluşan taşma hatalarının önüne geçme amaçlı olarak, stack boyutunu otomatik büyütme özelliğine sahiptir. Stack sınıfına ait, constructor 'ın (New metodunun) 3 farklı overload versiyon bulunmaktadır;

Public Sub New() Bu versiyon kullanılarak türetilen bir Stack nesnesi, bellekte default olarak belirlenmiş büyüklük (10 eleman) ve büyüme faktörüne (2) sahip bir stack yapısını oluşturur.

Public Sub New(ByVal initialCapacity As Integer) Bu versiyon kullanılarak türetilen bir Stack nesnesi, bellekte, fonksiyonun parametresinde belirlenen büyüklükte bir stack yapısını oluşturur. Bu durumda büyüme faktörü ise yine default değer olan (2) olacaktır.

Public Sub New(ByVal col as ICollection) Bu versiyon kullanılarak türetilen bir Stack nesnesi, fonksiyonun parametresinde belirlenen collection'ın elemanlarını kopyalarak, bir stack yapısı oluşturur.

Stack Sistemi Üzerinde İşlemler

Stack sistemi üzerinde eleman ekleme, silme, bulma gibi işlemler; Stack sınıfına ait üyeler kullanılarak gerçekleştirilir.

Public Overridable Sub Push(ByVal obj as Object) Stack 'e, parametresinde belirtilen elemanı ekler.

Public Overridable Sub Pop() as Object Stack 'in başındaki ilk elemanı (stack'ten silerek !) döndürür.

Public Overridable Sub Peek() as Object Stack 'in başındaki ilk elemanı (stack'ten silmeden !) döndürür.

Public Overridable Function Contains(ByVal obj As Object) as Boolean

Stack 'te bir elemanın yer alıp, almadığı araştırılacaksa bu fonksiyon kullanılır. Parametresi varlığı araştırılacak elemandır. Elaman stack 'te varsa fonksiyon true ile, yoksa false ile döner.

Not : Bu metot stack üzerinde lineer search işlemi gerçekleştirdiği için ortalama çalışma süresi kuyruktaki eleman sayısı ile orantılıdır.

Public Overridable Sub Clear() Bu metot stack 'te bulunan tüm elemanları silerek, eleman sayısını sıfır değerine set eder.

Overridable Public Function ToArray() As Object Bu metot stack 'te bulunan tüm elemanları tek boyutlu bir diziye kopyalar. Fonksiyonun dönüş değeri Array türünden nesne referansıdır ve dizi nesnesi türetme amacı ile kullanılır.

Count Property 'si : Stack 'teki eleman sayısını tutar.

Örnek : Aşağıda stack sınıfının kullanımı örneklenmiştir.

Sub Main()

Dim i As Integer

Dim oStk As Stack = New Stack()

'Stack 'e eleman ekleme

oStk.Push("1. Eleman")

oStk.Push("2. Eleman")

oStk.Push("3. Eleman")

'Stack'teki elemanları diziye kopyalama

Dim oDizi As Array = oStk.ToArray()

'Dizi elemanlarının görüntülenmesi

Console.WriteLine("-----------")

For i = 0 To oDizi.Length - 1

Console.WriteLine(oDizi(i))

Next

'Stack'ten eleman silme

oStk.Pop()

oDizi = oStk.ToArray()

'Dizi elemanlarının yeniden görüntülenmesi

Console.WriteLine("-----------")

For i = 0 To oDizi.Length - 1

Console.WriteLine(oDizi(i))

Next

End Sub
Alıntı ile Cevapla
Cevapla
Arama Etiketleri: , , ,



Seçenekler


Benzer Konular
Konu Konu Açanlar Forum Cevaplar Güncel Mesajlar
Queue (Mail) nedir? anlamı MaNeX Webmaster Sözlügü 0 26-02-2008 07:57
Sınıfların kullanılması, sitil sınıfı oluşturmak,istediğiniz bölüme bu sitilleri uygulamak kadınca Web Dersleri 0 12-02-2008 09:31
Java'da LIFO Stack Yapısı miguel Java 0 04-02-2008 04:20
Stack ve Queue Sınıflarının Kullanılması - 1 B737 .NET programcılığı 0 24-01-2008 01:56
Video Ekleme Tagının VBulletin forumuna eklenmesi ve kullanılması tarantino Vbulletin 0 12-12-2007 02:34


Webmaster web tasarım online reviews ~ Kadınlar blogu ~ Apple iPhone, iPod Touch ( iTouch ) Forum ~ iPhone