26 Aralık 2014 Cuma

Stack - Yığıt - Yığın

          Stack sınıfı nesnelerin LIFO (last-input-first-output) yapısıyla depolanmasını sağlayan bir veri tipidir. Yani nesnelerinizin üst üste depolandığını varsayarsanız ilk nesneniz altta , eklediğiniz yeni nesneler onun üstüne şeklinde devam eden bir yapısı vardır . Örnek vermek gerekirse android telefonlarda açılan uygulamalar yığın yapısıyla depolanır . Açık kalan uygulamalarınız geri tuşuna bastıkça yığının en üstündeki yani kullandığınız bir önceki uygulamaya geçerek devam eder .

           Stack sınıf içinde 5 tane method bulunmaktadır .


  • E peek() : Yığının en üstündeki nesneyi gönderir . 

  • E pop() : Yığının en üstündeki nesneyi gönderir . Peek den farkı burada öğe silinir , peek de silinmez göstermek amaçlı kullanılır .

  • E push(E item) : Gelen nesneyi yığının en üstüne koyar . 

  • int search(Object o) : Verilen nesnenin yığında kaçıncı sırada olduğunu söyler . Saymaya son girenden başlar . Değer yoksa -1 gönderir .

  • boolean empty() : Yığının boş olup olmadığını kontrol eder. 

Aşağıda daha açıklayıcı olması açısından basit bir örnek yapılmıştır .

import java.util.Stack;


public class Driver {

 public static void main(String[] args) {
  
  // stack sınıfından instance alındı
  Stack stack = new Stack<>();
  
  // initialize methodu çağrıldı ve push methoduyla yığın dolduruldu 
  initialize(stack);
  
  // peek = en üstteki nesneyi bul
  stack.peek();
  String peek = stack.peek();
  System.out.print("\n En Tepede "+peek);
  printStack(stack);
  
  
  stack.pop();
  printStack(stack);
  
  // search = nesnenin sırasını bul
  System.out.println(stack.search("D"));
  System.out.println(stack.search("L"));
  
  
 }

 public static void initialize(Stack stack) {
  //push = yığına nesne ekle
  stack.push("A");
  printStack(stack);
  stack.push("B");
  printStack(stack);
  stack.push("C");
  printStack(stack);
  stack.push("D");
  printStack(stack);
  stack.push("E");
  printStack(stack);
 }

 private static void printStack(Stack stack) {
  // isEmpty = yığın boş mu kontrol et
  if(!stack.isEmpty())
   System.out.printf("\n%s ",stack);
  
   
 }
 
 
}
[A] 
[A, B] 
[A, B, C] 
[A, B, C, D] 
[A, B, C, D, E] 
 En Tepede E
[A, B, C, D, E] 
[A, B, C, D] 
1
-1

0 yorum:

Yorum Gönder