Veri Yapıları(Data Structures)

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üye
Katılım
10 Ara 2018
Mesajlar
47
Tepki puanı
10
Ödüller
3
Yaş
29
7 HİZMET YILI
Bu konu çok geniş ve önemli arkadaşlar elinizin altında bulunsun diye bir kaç seride bitirmeyi planlıyorum.

6o2xtrL4KYM-MDD0GefGYduJhoiBWJnvB3nmboeTR8gHfGT_PNdSkIflnxG7Hk3yb5xRCiqTCtkImraaRN6wYODdEkOmEiXpIUgMsqfMdn1U

Yukarıda gördüğünüz [VeriTipi/Genişliği(Bit cinsinden)/Alabileceği min-max değer] tablosu temel konudur arkadaşlar.
ne nerede kullanılır bilmekte fayda var.

Örneğin;
Bir address tanımlayacağız. Adress 0'dan küçük bir değer olamayacaktır. bu yüzden unsigned int kullanmakta fayda vardır.

Peki;
Veri Yapıları Nelerdir ?
Veri yapıları üçe ayrılır;
  • TEMEL YAPILAR
  • BASİT YAPILAR
  • BİRLEŞİK YAPILAR

Temel Yapılar=
  • integer
  • char
  • float
  • boolean
Gördüğünüz gibi arkadaşlar temel yapılar hepimizin bildiği yapılardır.

Basit Yapılar=

  • array
  • string
  • structure
  • union
Evet basit yapılar ise; temel veri yapılarından faydalanılarak oluşturulan yapılardır.

Örneğin;
C++:
struct ad{
    int yas;
    char ad[ ];
}kayit;

Birleşik Yapılar =
  1. Doğrusal(Linear)
  2. Doğrusal Olmayan(Non-Lınear)
Doğrusal;
  • Stack
  • Queue
Doğrusal Olmayan;
  • Tree
  • Graph
Bu yapıda ise Hem basit hemde temel yapıdan faydalanılır.

BELLEĞİN YAPISI

Yapısal olarak bellek, büyüklüğüne bağlı olarak binlerce, milyonlarca l’er Byte (8 Bit)’lik veriler saklayabilecek biçimde tasarlanmış bir elektronik devredir.

Her bir hücreyi birbirinden ayırmak için hücreler numaralarla adreslenir. Program, işlemci ve işletim sistemi bu adresleri kullanarak verilere erişir.

Ne demek bu dediğinizi duyar gibiyim^^, hemen açıklayayım.

Arkadaşlar hafızada her bir veri için bir alan belirlenir eğer int a; derseniz hafızada 8 byte değerinde bir yer ayırırsınız.

Hafızada bir kutu düşünün bu kutunun hafızada kapladığı alan 8 byte.
Değeri:
a.
Tutulduğu adres : 0xF4F4
Evet arkadaşlar addressler hexadecimal(16'lık) biçimde ifade edilir.


Stack Nedir ?

Abstract Data Type(Soyut Veri Tipleri) arasında yer alır.

Tek taraflı giriş ve çıkışlara açık olan. İlk giren son çıkar mantığı hakimdir.
Diğer bir adıyla;
LIFO (Last in First Out)

Temelde üç farklı fonsiyonu vardır;
  • Push -> Stack içerisine bir bilgi koymaya (Stack’in en tepesine koyar)
  • Pop -> Stack içerisinden bir bilgi almaya (Stack’in en tepesinden alır)
  • Top -> Stack’in en tepesindeki bilgiyi alır ancak stackten çıkartmaz sadece okur
Burada gördüğünüz gibi.

Temel olarak stack, bir
Bağlantıları görmek için lütfen Giriş Yap
veya
Bağlantıları görmek için lütfen Giriş Yap
üzerine inşa edilebilirler.
Peki nedir bu array ve Linked List ?

Array bildiğiniz gibi dizi demektir.
Linked List ise arkadaşlar basitçene şöyle anlatayım.

singly_linked_list.png


Yukarıda gördüğünüz tablo;

Herhangi bir tipten düğümleri,yine kendi tipinden olan düğümleri işaret etmesi oluşan zincirdir.
bakın 12 değeri bir "root", başlangıç, ve bu başlangıç nodunu tutan bir pointer var. hemen yanındaki kutu
aynı şey 99 da da var arkadaşlar fark edeceğiniz üzere.
Burada Array yerine bağlı liste kullanmamızın avantajı hafızayı dinamik bir şekilde kullanıyor olmasıdır.

Yani şöyle;
Hafızaya eklenen kadar yer açar silinen kadar yer siler ^^.

Bakınız başka bir örnekle anlatmaya çalışayım..

struct node { int data; struct node *next; };

Bilgisayar belleği doğrusaldır.
Bilgiler sıra sıra hücrelere saklanır.
Her bir bilgiye daha kolay ulaşmak için bunlara numara verilir ve her birine node adı verilir.
Data alanı, numarası verilen node’da tutulacak bilgiyi ifade eder.
Next (link) alanı ise bir node’dan sonra hangi node gelecekse o node’un bellekteki adresi tutulur.

Peki bu Stackler nerelerde kullanılıyor ?

- (, {, [, ], }, ) ayıraçlarının C/C++ derleyicisinin kontrollerinde,
- postfix → infix dönüştürmelerinde,
- Yazılım uygulamalarındaki Parsing ve Undo işlemlerinde,
- Web browser’lardaki Back butonu (önceki sayfaya) uygulamasında,
- Ayrıca, mikroişlemcinin içyapısında stack adı verilen özel hafıza alanı ile mikroişlemci arasında, bazı program komutları ile (push ve pop gibi), bir takım işlemlerde (alt program çağırma ve kesmeler gibi), veri transferi gerçekleştirmede.

Stack Vs Heap

Arkadaşlar daha öncede değindiğim gibi yazdığınız kodlar hafızada yer kaplar. Eğer program esnasında boyutları bildirilmiş değişmez bir değer kullanıyorsak stack kullanmalıyız.
Ancak değişebilir bir değer kullanmak istiyorsak Heap kullanmalıyız.
Stack kullanılır ve işi bittikten sonra kendini otomatik olarak bellekten yok eder.
Fakat arkadaşlar Heap te bu işi siz yapmalısınız :)
Stack'ın heapa göre tercih edilmesinin en büyük sebeplerinden biride hızdır.
Ayrıca stack derlendiği esnada oluşur ve daha sonra kendini siler.




Şimdilik bu kadar yeter umarım faydalı olmuştur Teşekkürler ^^
 
Moderatörün son düzenlenenleri:
Ölümlü dünyada ölümsüz olmaya çalışmayın
Seçkin Üye
Katılım
24 Ocak 2019
Mesajlar
364
Çözümler
7
Tepki puanı
76
Ödüller
3
Yaş
27
7 HİZMET YILI
Vaayy sanal ders :D Güzeldir eline sağlık hocam +rep
 
Btw
Süper Üye
Katılım
15 Nis 2019
Mesajlar
657
Çözümler
1
Tepki puanı
253
Ödüller
5
7 HİZMET YILI
şunları çalışsak öğreniriz çok teşekkürler eline sağlık
 
Üye
Katılım
10 Ara 2018
Mesajlar
47
Tepki puanı
10
Ödüller
3
Yaş
29
7 HİZMET YILI
Rica ederim umarım faydalı olur
 
Seçkin Üye
Katılım
12 Nis 2018
Mesajlar
383
Tepki puanı
28
Ödüller
7
Yaş
29
8 HİZMET YILI
çok teşekkürler dostum eline sağlık. sanal ders gibisi yok ^^
 
MemoryHackers Member
Ultra Üye
Katılım
24 Şub 2018
Mesajlar
1,560
Çözümler
3
Tepki puanı
48
Ödüller
8
Yaş
34
8 HİZMET YILI
Useful topic it helps me to learn more.
 
Onaylı Üye
Katılım
16 Ocak 2020
Mesajlar
135
Çözümler
1
Tepki puanı
3
Ödüller
3
Yaş
26
6 HİZMET YILI
Thanks a lot buddy. there is nothing like virtual lesson ^^
 
☆☆Her oyun bir gün hileyi tadacaktır☆☆
Griffin Premium
Katılım
12 Kas 2017
Mesajlar
13,726
Çözümler
240
Tepki puanı
5,132
Ödüller
23
8 HİZMET YILI
Bilgilendirici ve çok çok yararlı olmuş dostum eline sağlık bir nevi ders gibi olmuş
 
Seçkin Üye
Katılım
30 Nis 2018
Mesajlar
316
Çözümler
1
Tepki puanı
17
Ödüller
7
Yaş
28
8 HİZMET YILI
güzel yararlı konu
 
Süper Üye
Katılım
22 Mar 2020
Mesajlar
608
Çözümler
5
Tepki puanı
71
Ödüller
5
Yaş
26
6 HİZMET YILI
teşekkkürler dostum herkez için faydalı bir konu olmuş biraz pratikle öğrenilebilir
 
Onaylı Üye
Katılım
20 Nis 2020
Mesajlar
51
Tepki puanı
4
Ödüller
5
Yaş
27
6 HİZMET YILI
benim için çok faydalı oldu teşekkürler
 
Uzman Üye
Katılım
19 Nis 2020
Mesajlar
298
Çözümler
6
Tepki puanı
38
Ödüller
4
6 HİZMET YILI
Kısa bir bilgisayar mühendisliği 2. sınıf tekrarı yaptırdın :D Konu için teşekkürler.
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üst