• Sonuç bulunamadı

Singly linked lists (Tek bağlı)

N/A
N/A
Protected

Academic year: 2021

Share "Singly linked lists (Tek bağlı)"

Copied!
13
0
0

Yükleniyor.... (view fulltext now)

Tam metin

(1)

z

Singly linked lists (Tek bağlı)

z

Doubly linked lists (Çift bağlı)

z

Circular lists

z

Skip lists

z

Self-organized lists

z

Sparse tables

Yrd.Doç.Dr. M. Ali Akcayol G. Ü. Bilgisayar Mühendisliği Bölümü

BAĞLI LİSTELER

Singly linked lists

z

Dizilerin dezavantajları.

-

Boyut değiştirme zordur

-

Yeni bir eleman ekleme zordur

-

Bir elemanı silme zordur

-

Diziler tüm elemanları için hafızada yer ayırırlar

Bağlı dizilerle bu problemler aşılabilmektedir.

0

1

2

3

4

5

6

7 Mahmut

Mehmet

Melek

Melike

Murat

Mustafa

Mürsel Metin

(2)

Singly linked lists

z

Her dizi elemanı için ayrı hafıza alanı ayrılır.

z

Bilgi kavramsal olarak sıralıdır ancak hafızada bulunduğu yer sıralı değildir.

z

Herbir eleman (node) bir sonrakini gösterir.

Bağlı liste

G. Ü. Bilgisayar Mühendisliği Bölümü

BAĞLI LİSTELER

Singly linked lists

z Listedeki herbir eleman data ve link kısmından oluşur.

z Data kısmı içerisinde saklanan bilgiyi ifade eder.

z Link kısmı ise kendisinden sonraki elemanı işaret eder.

public class L

public class List istNode Node {

{

int

int

data;

data;

public ListNode

public ListNode

sonraki

sonraki; ; }

}

Data Link

Bir sonraki elemanı işaret eder.

(3)

Singly linked lists

z Listede bir başlangıç elemanı vardır (head).

z Listenin birde sonuncu elemanı vardır (tail).

z Listede aktif (current) eleman şu anda bilgilerine ulaşabileceğimiz elemandır.

Tek bir eleman

head tail

current

G. Ü. Bilgisayar Mühendisliği Bölümü

BAĞLI LİSTELER

Singly linked lists (İşlemler)

z Listeye eleman ekleme

-Başa

-Sona

-Sıralı

z Listeden eleman silme

-Baştan -Sondan -Tümünü

-Belirlenen bilgiye sahip elemanı -İstenen sıradaki elemanı

z Arama

z Listeleme - İstenen bilgiye göre z Kontrol

- Boş liste - Liste boyutu

(4)

Singly linked lists (Liste oluşturma) public class ListNode

{

public string adSoyad;

public ListNode sonraki;

public ListNode(string adSoyad) {

this.adSoyad = adSoyad;

} }

public class LinkedList {

public ListNode headNode, tailNode;

public LinkedList() {

headNode = new ListNode("head");

tailNode = new ListNode("tail”);

headNode.sonraki = tailNode;

tailNode.sonraki = tailNode;

} }

head tail

G. Ü. Bilgisayar Mühendisliği Bölümü

BAĞLI LİSTELER

Singly linked lists (Eleman ekleme)

ListNode yeniNode = new ListNode(“Mustafa");

yeniNode.sonraki = aktif.sonraki;

aktif.sonraki = yeniNode;

head aktif tail

1 2

2 1

(5)

Singly linked lists (Eleman ekleme)

ListNode yeniNode = new ListNode(“Mustafa");

aktif.sonraki = yeniNode;

tailNode = yeniNode;

head aktif tail

1 2

1 2

G. Ü. Bilgisayar Mühendisliği Bölümü

BAĞLI LİSTELER

Singly linked lists (Eleman silme)

while ((aktif.sonraki != bagliListe.tailNode) && (aktif.sonraki != silinecekNode)) {

aktif = aktif.sonraki;

}

aktif.sonraki = aktif.sonraki.sonraki;

head aktif tail

(6)

Singly linked lists (Eleman arama)

while ((aktif.sonraki != bagliListe.tailNode) && (aktif.sonraki != arananNode)) {

aktif = aktif.sonraki;

}

head aktif tail

G. Ü. Bilgisayar Mühendisliği Bölümü

BAĞLI LİSTELER

Singly linked lists (Boş liste)

if (head.sonraki == tail) listeBos = true else listeBos = False;

Eleman sayısı:

int i = 0;

ListNode aktif = bagliListe.headNode;

while (aktif.sonraki != bagliListe.tailNode) {

aktif = aktif.sonraki;

i++;

}

listeBoyutu = i;

head tail

(7)

Doubly linked lists (Liste oluşturma) public class ListNode {

public string adSoyad;

public ListNode onceki, sonraki;

public ListNode(string adSoyad) {

this.adSoyad = adSoyad;

} }

public class LinkedList {

public ListNode headNode, tailNode;

public LinkedList() {

headNode = new ListNode("head");

tailNode = new ListNode("tail”);

headNode.onceki = headNode;

headNode.sonraki = tailNode;

tailNode.onceki = headNode;

tailNode.sonraki = tailNode;

} }

head tail

G. Ü. Bilgisayar Mühendisliği Bölümü

BAĞLI LİSTELER

Doubly linked lists (Eleman ekleme)

ListNode yeniNode = new ListNode(“Mustafa");

yeniNode.sonraki = aktif.sonraki;

aktif.sonraki.onceki = yeniNode;

aktif.sonraki = yeniNode;

yeniNode.onceki = aktif;

head aktif tail

1 2 3 4

3 1 4 2

(8)

Doubly linked lists (Eleman silme)

while ((aktif.sonraki != bagliListe.tailNode) && (aktif.sonraki != silinecekNode)) {

aktif = aktif.sonraki;

}

aktif.sonraki.sonraki.onceki = aktif;

aktif.sonraki = aktif.sonraki.sonraki;

head aktif tail

1

2 3

1

2 3

G. Ü. Bilgisayar Mühendisliği Bölümü

BAĞLI LİSTELER

Doubly linked lists (Eleman arama)

while ((aktif.sonraki != bagliListe.tailNode) && (aktif.sonraki != arananNode)) {

aktif = aktif.sonraki;

}

while ((aktif.onceki != bagliListe.headNode) && (aktif.onceki != arananNode)) {

aktif = aktif.onceki;

}

head aktif tail

(9)

Circular lists

Sadece 1 tane sabit node vardır (tailNode)

aktif aktif

tail

tail

G. Ü. Bilgisayar Mühendisliği Bölümü

BAĞLI LİSTELER

Circular lists

(10)

Skip lists

Eleman ekleme ve silme zordur. Listenin yeniden seviyelendirilmesi gerekir.

Arama işlemi çok hızlıdır.

G. Ü. Bilgisayar Mühendisliği Bölümü

BAĞLI LİSTELER

Sel-organizing lists

Move-to-front: Erişilen elemenı listenin başına alır Transpoze: Erişilen elemanı önündekiyle yer değiştirir

(11)

Sparse tables

G. Ü. Bilgisayar Mühendisliği Bölümü

BAĞLI LİSTELER

Sparse tables Bağlı dizilerle gösterim

(12)

G. Ü. Bilgisayar Mühendisliği Bölümü

BAĞLI LİSTELER

Haftalık Ödev:

K adet ders için N adet öğrencinin numara ve harf ortalamalarını bağlı dizilerle gösteriniz.

- Herbir node öğrenci numarası, dersin kodu, dersin harf ortalaması bilgilerini bulunduracak.

- Her öğrencinin numarası headNode içindeki bilgi olacak.

- Her dersin kodu headNode içindeki bilgi olacak.

- Herbir node aynı dersteki bir sonraki öğrenciyi gösterecek.

- Herbir node aynı kişinin diğer dersini gösterecek.

- Program Windows application olarak hazırlanacak ve aşağıdaki işlemleri butonlarla yapacak.

1- Bir öğrenciye yeni bir ders ekleme 2- Bir derse yeni bir öğrenci ekleme 3- Bir öğrencinin bir dersini silme 4- Bir dersteki bir öğrenciyi silme

(13)

G. Ü. Bilgisayar Mühendisliği Bölümü

Gelecek Hafta

Yığınlar

(Stacks)

Referanslar

Benzer Belgeler

Açık Ders Malzemeleri Sistemine eklenmek üzere hazırlamış olduğum, yukarıda bilgisiverilen ders, düzen, kapsam ve ders ekleme kılavuzunda belirtilen standartlar

Dersin Web Adresi / URL https://acikders.ankara.edu.tr/course/view.php?id=7603 Açık Ders Malzemeleri Sistemine eklenmek üzere hazırlamış olduğum, yukarıda bilgisi verilen

Açık De Mal emele i Si emine eklenmek e e ha ı lanmı , ka ıda bilgi i e ilen ders, düzen, kapsam ve de ekleme kıla nda beli ilen anda la açı ından,

Açık De Mal emele i Si emine eklenmek e e ha ı lanmı , ka ıda bilgi i e ilen ders, düzen, kapsam ve de ekleme kıla nda beli ilen anda la açı ından,

Açık Ders Malzemeleri Sistemine eklenmek üzere hazırlamış olduğum , ukarıda bilgisi verilen ders, düzen, kapsam ve ders ekleme kılavuzunda belirtilen standartlar

Açık Ders Malzemeleri Sistemine eklenmek üzere hazırlanmış, yukarıda bilgisi verilen ders, düzen, kapsam ve ders ekleme kılavuzunda belirtilen standartlar açısından ,

Horizontal göz hareketlerinin düzenlendiği inferior pons tegmentumundaki paramedyan pontin retiküler formasyon, mediyal longitidunal fasikül ve altıncı kraniyal sinir nükleusu

En az yüz yıllık perspektifi olan; Bir Kuşak - Bir Yol Projesinin, Asya, Afrika ve Avrupa’yı kara deniz ve demiryolları ile entegre edeceği, projenin hat üzerinde bulunan