1 / 55

Bölüm 12 – Veri Yapıları

Bölüm 12 – Veri Yapıları. Konular 12.1 Giriş 12.2 Kendine Referanslı Yapılar 12.3 D inamik Bellek Tahsisi 12.4 Bağlı Listeler 12.5 Yığınlar 12.6 Kuyruklar 12.7 Ağaçlar. Amaçlar. Bu bölümde şunları öğreneceksiniz :

dana
Download Presentation

Bölüm 12 – Veri Yapıları

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Bölüm 12 – Veri Yapıları Konular12.1 Giriş12.2 Kendine Referanslı Yapılar12.3 Dinamik Bellek Tahsisi12.4 Bağlı Listeler12.5 Yığınlar12.6 Kuyruklar12.7 Ağaçlar

  2. Amaçlar • Bu bölümde şunları öğreneceksiniz: • Veri nesneleri için dinamik bellek tahsisi ve bırakılması işlemlerini yapabilme • Göstericileri kullanarak bağlı, kendine referanslı ve özyinelemeli veri yapıları oluşturabilme • Bağlı liste, kuyruk, yığın ve ikili ağaç oluşturabilme ve kullanabilme • Çeşitli önemli bağlı veri yapısı uygulamalarını anlayabilme

  3. 12.1 Giriş • Dinamik veri yapıları • Çalışma anında büyüyüp küçülebilen veri yapıları • Bağlı listeler • İstenilen yere ekleme ve çıkarma yapabilmeye izin verilir • Yığınlar • Sadece yığının başına ekleme ve çıkarma yapabilme izni vardır • Kuyruklar • Sondan ekleme ve başlangıçtan çıkarma yapılabilir • İkili ağaçlar • Veri üzerinde yüksek hızda arama ve sıralama yapmayı sağlar, ve tekrar edilmiş veriyi eler

  4. 12.2 Kendine Referanslı Yapılar • Kendine Referanslı Yapılar • Kendisiyle aynı tipte başka bir yapı içeren bir yapı • Listeler, kuyruklar, yığınlar ve ağaçlar gibi kullanışlı yapıları oluşturmak için birbirlerine bağlanıp bir araya getirilebilirler • NULLgöstericisi ile sonlanırlar (0) struct dugum { int veri; struct dugum *sonraki;} • sonraki • dugum tipinde bir nesneyi işaret eder • Bağlantı olarak anlatılır • Bir düğümü diğer birdüğüme bağlar

  5. 10 15 12.3 Dinamik Bellek Tahsisi Figür 12.1 Birbirine bağlanmış iki kendine referanslı yapı

  6. 12.3 Dinamik Bellek Tahsisi • Dinamik Bellek Tahsisi • Çalışma anında belleğin ayırılması ve bırakılması • malloc • Ayırılacak byte sayısını alır • Bir nesnenin büyüklüğünü belirlemek için sizeof fonksiyonu kullanılır • void * tipinde işaretçi geri çevirir • Birvoid *işaretçisi herhangi bir işaretçiye atanabilir • Uygun bellek alanı bulamazsa NULL geri çevirir • Örnek yeniPtr = malloc( sizeof( struct dugum ) ); • free • Malloctarafından alınan belleği geri verir • Parametre olarak bir işaretçi alır • free ( yeniptr );

  7. 12.4 Bağlı Listeler • Bağlı liste • “Düğüm” olarak adlandırılan kendine referanslı sınıf nesnelerinin doğrusal birleşimi • İşaretçi bağlarıyla bağlanmışlardır • Listenin ilk elemanını gösteren bir gösterici ile erişilir • Başlangıçtan sonraki düğümlere o anki düğümün işaretçi-bağı ile erişilir • En son düğümün işaretçi-bağı listenin sona erdiğini belirtmek için NULL olarak belirlenir • Şu durumlarda dizi yerine bağlı liste kullanınız • Kaç eleman olacağını başlangıçta bilmediğinizde • Listenizin hızlıca sıralanması gerektiğinde

  8. 12.4 Bağlı Listeler

  9. fig12_03.c (Part 1 of 8)

  10. fig12_03.c (Part 2 of 8)

  11. fig12_03.c (Part 3 of 8)

  12. fig12_03.c (Part 4 of 8)

  13. fig12_03.c (Part 5 of 8)

  14. fig12_03.c (Part 6 of 8)

  15. fig12_03.c (Part 7 of 8)

  16. fig12_03.c (Part 8 of 8)

  17. Enter your choice: 1 to insert an element into the list. 2 to delete an element from the list. 3 to end. ? 1 Enter a character: B The list is: B --> NULL ? 1 Enter a character: A The list is: A --> B --> NULL ? 1 Enter a character: C The list is: A --> B --> C --> NULL ? 2 Enter character to be deleted: D D not found. ? 2 Enter character to be deleted: B B deleted. The list is: A --> C --> NULL Program çıktısı (Part 1 of 3)

  18. ? 2 Enter character to be deleted: C C deleted. The list is: A --> NULL ? 2 Enter character to be deleted: A A deleted. List is empty. ? 4 Invalid choice. Enter your choice: 1 to insert an element into the list. 2 to delete an element from the list. 3 to end. ? 3 End of run. ? 2 Enter character to be deleted: C C deleted. The list is: A --> NULL ? 2 Enter character to be deleted: A A deleted. List is empty. Program çıktısı (Part 2 of 3)

  19. ? 4 Invalid choice. Enter your choice: 1 to insert an element into the list. 2 to delete an element from the list. 3 to end. ? 3 End of run. Program çıktısı (Part 3 of 3)

  20. 12.4 Bağlı Listeler

  21. 12.5 Yığınlar

  22. 12.5 Yığınlar

  23. fig12_08.c (Part 1 of 6)

  24. fig12_08.c (Part 2 of 6)

  25. fig12_08.c (Part 3 of 6)

  26. fig12_08.c (Part 4 of 6)

  27. fig12_08.c (Part 5 of 6)

  28. fig12_08.c (Part 6 of 6) Program çıktısı (Part 1 of 2) Enter choice: 1 to push a value on the stack 2 to pop a value off the stack 3 to end program ? 1 Enter an integer: 5 The stack is: 5 --> NULL ? 1 Enter an integer: 6 The stack is: 6 --> 5 --> NULL

  29. ? 1 Enter an integer: 4 The stack is: 4 --> 6 --> 5 --> NULL ? 2 The popped value is 4. The stack is: 6 --> 5 --> NULL ? 2 The popped value is 6. The stack is: 5 --> NULL ? 2 The popped value is 5. The stack is empty. ? 2 The stack is empty. ? 4 Invalid choice. Enter choice: 1 to push a value on the stack 2 to pop a value off the stack 3 to end program ? 3 End of run. Program çıktısı(Part 2 of 2)

  30. 12.5 Yığınlar • Yığın • Yeni düğüm ekleme ve çıkarma işlemi sadece en üstten yapılabilir • Son giren ilk çıkar (Last-in, first-out (LIFO)) • Yığının sonu NULL a bağlanmış bir elemanla belirtilir • Bağlı listenin kısıtlı bir versiyonudur • push • Yığının başına bir düğüm ekler • pop • Yığının başından bir düğüm çıkarır • Çıkarılan değeri tutar • Çıkarma işlemi başarılı ise true döndürür

  31. 12.5 Yığınlar

  32. 12.5 Yığınlar

  33. 12.6 Kuyruklar • Kuyruk • Bir süpermarket kasasındaki ödeme kuyruğuna benzer • İlk giren ilk çıkar (First-in, first-out (FIFO) ) • Düğümler sadece başlangıçtan çıkarılır • Düğümler sadece sondan eklenir • Ekleme ve çıkarma • Enqueue (ekleme) ve dequeue (çıkarma)

  34. 12.6 Kuyruklar

  35. fig12_13.c (Part 1 of 7)

  36. fig12_13.c (Part 2 of 7)

  37. fig12_13.c (Part 3 of 7)

  38. fig12_13.c (Part 4 of 7)

  39. fig12_13.c (Part 5 of 7)

  40. fig12_13.c (Part 6 of 7)

  41. fig12_13.c (Part 7 of 7) Program çıktısı (Part 1 of 2) Enter your choice: 1 to add an item to the queue 2 to remove an item from the queue 3 to end ? 1 Enter a character: A The queue is: A --> NULL ? 1 Enter a character: B The queue is: A --> B --> NULL ? 1 Enter a character: C The queue is: A --> B --> C --> NULL

  42. ? 2 A has been dequeued. The queue is: B --> C --> NULL ? 2 B has been dequeued. The queue is: C --> NULL ? 2 C has been dequeued. Queue is empty. ? 2 Queue is empty. ? 4 Invalid choice. Enter your choice: 1 to add an item to the queue 2 to remove an item from the queue 3 to end ? 3 End of run. Program çıktısı (Part 2 of 2)

  43. 12.6 Kuyruklar

  44. 12.6 Kuyruklar

  45. 12.7 Ağaçlar • Ağaç düğümleri iki veya daha fazla bağa sahiptir • Gördüğümüz diğer bütün veri yapıları tek bağlıdır • İkili ağaçlar (Binary) • Bütün düğümleri iki bağlıdır • Biri, ikisi NULL olabilir veya hiçbiri olmayabilir • Kök düğüm(root) ağacın ilk düğümüdür • Kök düğümdeki her bir bağ bir çocuk düğümü (child node) işaret eder • Hiç çocuğu olmayan düğüme yaprak denir (leaf node)

  46. 12.7 Ağaçlar

  47. 12.7 Ağaçlar • İkili arama ağacı • Sol alt düğümdeki değerler üst düğüm değerinden küçüktür • Sağ alt düğümdeki değerler üst düğüm değerinden büyüktür • Aynı değerlerin engellenmesini kolaylaştırır • Hızlı arama sağlar – dengeli ağaç için en fazla log2(n) karşılaştırma yapılır

  48. 12.7 Ağaçlar • Ağaçta dolaşma: • İç sıralı (inorder)gezinme–düğüm değerlerini artan sırada yazdırır 1. Soldaki alt ağacı iç sıralı olarak gezin 2. Düğümdeki değeri işle (örneğin değeri yazdır) 3. Sağdaki alt ağacı sıralı olarak gezin • Baştan başlayarak (preorder)gezinme 1. Düğümdeki değeri işle 2. Soldaki alt ağacı baştan başlayarak gezin 3. Sağdaki alt ağacı baştan başlayarak gezin • Sondan başlayarak (postorder) gezinme 1. Soldaki alt ağacı sondan başlayarak gezin 2. Sağdaki alt ağacı sondan başlayarak gezin 3. Düğümdeki değeri işle

  49. fig12_19.c (Part 1 of 6)

  50. fig12_19.c (Part 2 of 6)

More Related