Skip to main content

C Programlama : Yiğin İşlemleri

C Programlama ile Veri Yapıları diğer dillere oranla biraz daha emek istiyor. C makine diline daha yakın olduğu doğal olarak kodlaması zor. Ama bence C ‘de veri yapılarını kavramış bir insan diğer dillerde hiç ama hiç zorlanmaz. Sonuçta Pointer kavramı C ve C++ ‘ta karşımıza çıkıyor. Üst düzey diller olan Java, C# gibi programlama dillerinde gerçek anlamda bir pointer kavramı yok, ve işleler çok daha basit bir şekilde halledilebiliyor. Ama programcılığı gerçek manada öğrenmek istiyorsanız ve ufkunuzu genişletmek istiyorsanız en azından veri yapılarını C ‘de kodlayabilmeniz şart.

Bugün Veri Yapılarının temel konularından olan Stack (Yığın) kavramına göz atacağız. Bir yığın nedir, nerelerde kullanılır , nasıl çalışır sorularına cevap bulacak ve örnek yığın kodu ile makeleyi sonrandıracağım.

Yığın Nedir ? 

Yığın C ‘de kullanılan en temel veri yapısıdır. Tek taraflı çalışır . Tek taraflı çalışması su anlama gelmektedir.  Yığına ilk giren eleman son çıkar.

Yığın kavramı için en güzel örnek   tek yönlü bir otopark verilebilir.  Örneğin bir otoparkımız olsun   otomobillerin  bu otoparka aşağıdaki gibi dizileceğini varsayalım.

Yigiy Yapısı

İlk olarak en üstteki kırmızı araç otoparka girecek ,ve kendisi için ayrılmıs olan Birinci araç yerine park edecektir, daha sonra 2. kırmızı araç kendisi için ayrılmış olan otopark alanına gidecektir, en son adımda 3. yani en alttaki kırmızı aracımız kendisi için ayrılmış alana  park etmeye çalışacaktır.

Araçların Park Edebilmesi  tek şart otopartkta boş alanın olması şartıdır. Yani otopark dolu olmamalıdır. 

Artık  araçların otoparka girdiğini varsayalım, aşağıdaki gibi bir  görüntü meydana gelecektir.

Veri Yapıları Yigin

Yukarıdaki yapıda Birinci arabanın otopark dışına çıkabilmesi için önce 3 numaralı aracın  , daha sonra iki numaraları aracın otopark alanından çıkması gerekmektedir,   daha sonra 1 numaralı araç otopark dışına çıkabilir. Buradan anlaşılacağı üzere Stack (Yığın) veri yapısında Yığın’a ilk giren eleman , son olarak yığından çıkar.

Bir Yığın Yapısının temel  fonksiyonları  genellikle aşağıdaki gibidir.

push : Yığıt’a bir eleman eklemek için kullanılır.

pop : Yığıt’ın en üst kısmında bulunan elemanı elde etmek için kullanılır.

isfull : Yığır’ın dolu olup olmadığını kontrol eder.

isempty : Yığıt’ın boş olup olmadığını kontrol eder.

Temel yığıt işlemleri için bu  4 fonksiyonu kullanmak yeterlidir.  Bunun dışında bir çok fonksiyon geliştirilebilir ki ben örnek verirken bir çok  farklı fonksiyon yazdım.

Şimdi C ‘de  bir Yığın Yapısının nasıl tanımlanacağını gösterelim.

Öncelikle bir Yığın tanımlarken  unutulmaması gereken nokta Yığın’ın bir büyüklüğünün olması gerektiğidir.  Bu yüzden bir yığıt tanımlarken  Boyut vermeyi unutmayalim.

Dikkat :  Dinamik bellik tahsisi yaparak  boyutu dinamik olarak genişletmekte mümkündür fakat biz şu anlık belli bir boyutu olan  Yığınlar ile çalışıyoruz.

Aşağıda bir yığın tanımlaması örneği verilmiştir.

#define BOYUT 5
struct yigin{
int top;
int veri[BOYUT];
};

 

top değişkeni bizim verilere ulaşırken  kullanacağımız index değişkenidir.  Yığındaki elemanlara ulaşabilmek için bu index değerini kullanacağız.    Yiğin’imiz  5  elemanlık bir yığıt .  Top değişkenini değeri  yeni bir yiğin oluşturulduğunda mutlaka sıfır olmalıdır.  Bu değer yığının boş olduğunu gösterir.

Ana programda şu şekikde bir tanımlama yaptığımızı düşünelim.

struct yigin BenimYiginim;

BenimYiginim=0;

Yukarıda ki kod , tanımladığımız yapıda boş bir yığın oluşturur. Daha sonra  kodunu vereceğim push()  fonksiyonu ile  Yığına eleman ekleyeceğiz ve yığınımız verilerle dolacak. Diyelim ki , şu anda yığın dolu  ve biz yığındaki 3. numaralı elemana ulasmak istiyoruz, bunu nasıl yapacağız. Yukarıda ki tanımlamanın devam ettiğini varsayarsak ;

x=BenimYiginim.veri[3]

Yukarıda ki kod , Yığınımda ki   3 numaralı indexte bulunan veriyi  x değişkenine atar. diyelim ki 5 elemanlı bir yığın olsun ve içersinde 10,20,30,40,50 değerleri olsun x=BenimYiginim.veri[3]   dediğimiz zaman x= 30 ‘a eşit olacaktır.

Yığın ile ilgili temel bilgileri verdikten sonra yığın işlemlerine geçebiliriz.  Aşağıda ki C Dili ile Yığın işlemleri yapılan bir   örnek program mevcuttur.  Programın işlevleri şunlardır.

  • Yığıta eleman ekleme
  • Yığıttan Eleman Çıkarma
  • Bir Yığıtın tamamını listeleme
  • Bir Yığıtı Tersten Listeleme
  • Bir Yığıttaki en büyük ve En küçük elemanı bulma
  • Bir Yığıtta Eleman arama

Programın kaynak kodunu verelim,

Başka bir uyugulamada görüşmek dileğiyle. Hoşçakalın..

Share and Enjoy

  • Facebook
  • Twitter
  • Delicious
  • LinkedIn
  • StumbleUpon
  • Add to favorites
  • Email
  • RSS

Aytaç Cici

İstanbul Üniversitesi Bilgisayar Mühendisliği mezunu bir Yazılım Geliştirici. Çeşitli zamanlarda Java, PHP, C# ve Delphi gibi diller kullanarak yazılım geliştirmiştir. Bir dönem SEO alanında da çalışmalar yapmıştır.

C Programlama : Yiğin İşlemleri” hakkında 8 yorum

  1. Merhaba,

    Çok anlaşılır bir anlatım olmuş, çok teşekkürler ancak örnek programı göremiyorum ve bulamıyorum, nereden indiricem acaba?

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Email
Print