Sunuyu indir
Sunum yükleniyor. Lütfen bekleyiniz
YayınlayanInal Hulusi Değiştirilmiş 10 yıl önce
1
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Bölüm 12 – Veri Yapıları Konular 12.1Giriş 12.2Kendine Referanslı Yapılar 12.3Dinamik Bellek Tahsisi 12.4Bağlı Listeler 12.5Yığınlar 12.6Kuyruklar 12.7Ağaçlar
2
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 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
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 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
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 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 –NULL gö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 bir düğüme bağlar
5
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 12.3 Dinamik Bellek Tahsisi 1015 Figür 12.1 Birbirine bağlanmış iki kendine referanslı yapı
6
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 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 Bir void * işaretçisi herhangi bir işaretçiye atanabilir Uygun bellek alanı bulamazsa NULL geri çevirir – Örnek yeniPtr = malloc( sizeof( struct dugum ) ); free –Malloc tarafından alınan belleği geri verir –Parametre olarak bir işaretçi alır –free ( yeniptr );
7
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 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
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 12.4 Bağlı Listeler
9
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig12_03.c (Part 1 of 8)
10
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig12_03.c (Part 2 of 8)
11
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig12_03.c (Part 3 of 8)
12
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig12_03.c (Part 4 of 8)
13
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig12_03.c (Part 5 of 8)
14
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig12_03.c (Part 6 of 8)
15
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig12_03.c (Part 7 of 8)
16
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig12_03.c (Part 8 of 8)
17
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Program çıktısı (Part 1 of 3) 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
18
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Program çıktısı (Part 2 of 3) ? 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.
19
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Program çıktısı (Part 3 of 3) ? 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.
20
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 12.4 Bağlı Listeler
21
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 12.5 Yığınlar
22
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 12.5 Yığınlar
23
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig12_08.c (Part 1 of 6)
24
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig12_08.c (Part 2 of 6)
25
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig12_08.c (Part 3 of 6)
26
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig12_08.c (Part 4 of 6)
27
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig12_08.c (Part 5 of 6)
28
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 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
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Program çıktısı(Part 2 of 2) ? 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.
30
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 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
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 12.5 Yığınlar
32
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 12.5 Yığınlar
33
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 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
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 12.6 Kuyruklar
35
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig12_13.c (Part 1 of 7)
36
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig12_13.c (Part 2 of 7)
37
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig12_13.c (Part 3 of 7)
38
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig12_13.c (Part 4 of 7)
39
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig12_13.c (Part 5 of 7)
40
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig12_13.c (Part 6 of 7)
41
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 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
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Program çıktısı (Part 2 of 2) ? 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.
43
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 12.6 Kuyruklar
44
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 12.6 Kuyruklar
45
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 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
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 12.7 Ağaçlar
47
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 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
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 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
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig12_19.c (Part 1 of 6)
50
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig12_19.c (Part 2 of 6)
51
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig12_19.c (Part 3 of 6)
52
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig12_19.c (Part 4 of 6)
53
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig12_19.c (Part 5 of 6)
54
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig12_19.c (Part 6 of 6) Program Çıktısı The numbers being placed in the tree are: 6 7 4 12 7dup 2 2dup 5 7dup 11 The preOrder traversal is: 6 4 2 5 7 12 11 The inOrder traversal is: 2 4 5 6 7 11 12 The postOrder traversal is: 2 5 4 11 12 7 6
55
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 12.7 Ağaçlar
Benzer bir sunumlar
© 2024 SlidePlayer.biz.tr Inc.
All rights reserved.