linked list :
node :her bir elemandır
her bir eleman kendinden sonra gelen elemanın adresini gösteriyo
bellekte rastgele adreslerde tutulabilirler
sıralı olmak zorunda değil
link list dinamik olarak liste yapısıdır
boyutunu değiştirebilcez
her node içinde bir data tutar bir de sonraki nodun adresini tutar
Public class ListNode {
int data ;
public ListNode sonraki ;
}
current dügüm :üzerinde bulundugumuz
head: bası oluyo listenin
tail : listenin sonu oluyo
linklist tek yönlü baglı listeler : sonrakinn datası var
en sondakinin bagı null olmalıdır *
araya elaman ekliceğin zaman baglantıyı kaybetmicen
header ı kaybetmicez kuyruk gecerli değil
headırı bulup kuyruga kadar gideriz
tek yönlü baglı liste anlatıldı
bigo en kötü çalışma zamanı
big omega da en iyi calışma zamanı
hem en iyi hem de en kötüsü eşit olan sey onun tetasidir
static dizi: bellekte sıralı olarak ayrılıyor
avantajı nedir ? meselaa index bazlı erişim yapılabilir
dogursal diziler büyüp kuçılemez
dinamik liste: bellekte farklı adreslerde yer ayrılıyor
dezavantjı nedir ?mesela headredan başlayıp,herseferinde istenilen yere kadar gidion
baglı listeler büyüyp kuculebilir
baglı listeler:
node :data ve referans tutar içinde
bir agac üzerinde ,liste üzerinde gezmeye TRAVERS denir
soru :sınıfta çözdü,sıanda sorsaydık keske ya dedi
public void deleteExacData(int data)
Node current=head;
Node temp=null ;
(Current)4–2—4–2—8—2–6
while(current!=null)
{
if(current.data==data)
temp=current.next.next;
current.next=temp;
}
current=current.next;
}
bütün 2 leri siler mesela bu 2 verirsen ****
Doubly linekd list:
bütün nodelar bir öncesinin ve bir sonrasının adresini tutar
datası da var
Dairesel baglı liste :tek yönlünün
en sondaki sey tail.next=head;
eger herhangi bir nodun nexti head i gösteriyosa dur dicen ***
dairesel iki yönlü liste :
ses kaydı baslıyo
head ı kullanmak yasak,tempe atcan onuuuu
25 sayfada 5. hafta notunda while içinde temp.next değilde temp desek ne olur
nullpointer exepciıon verdi
en son dügüme geldiğinde temp var ama nexti yok
dolayıısyla hata veriyo temp=temp.next asamasında
istenilen elemanı silme : ödevde yapamadıgınsey
boolean kkualnıcıyı bşlgilendirmek için
false ve true diye hani
head i kaybetme
bagı koparmadan önce bagı gecici bi yerde tut
kodlarda eksik yer bıtrakmıs musa hoca ,aman dikkat et ***
publicbooleandeleteNode(intdata)
{
booleandurum = false;
Nodecurrent= head;
Nodetmp= null;
if(current.data== data)
{
tmp= current.next;
head= tmp;
durum=true; //head=current.next eşit
}
else{ // else
{
while(current.next!= null)
{
if(current.next.data== data)
{
tmp= current.next;
current.next= tmp.next;
durum = true;
break;
}
current= current.next;
}
}
returndurum;
}
nextinin nexti nulla eşit değilse caltır diekmişiz galiba ,bi kontrol buymus
eksik bırakmış hoca
sınavda linkedlist cizse 3 kutu çiz kutular ğzerinden istenen islemleri yap
basit ifler yazcaz
nwenıde.next=current.text;
current.next=newnode;
sınavda yerleri değiştir 0 puan gtti soru *****
Doubly linked list :
sınavda arraylist tut deriz int data yerine olabilir yani
*****
öncesi ve sonrasi önce null yapcan head yok cünkü
basa ekleme
previus –new node–next
headin previusu null degil artık ,temp olcak
ve artık temp head olcak
en son yaazcaz onu head=temp; i
complexy analizi sorcak sınavda 1 nisan
tnımlarla işimiz yok
tanımlam
linked list
stack analttık
stack :neydi : LIFo idi
bu hafta kuyruk :
kuyruk bu hafta
queue :
yapılan bi işin srayla calısması içindir
first in first out :fifo ,lılo
enqueue :pop
insert de olabilir adı
dequeue :oush işlemine karsılık gelir
remove delete olarak ta adı vardır
en sondaki eleman rear ;
bastaki eleman front ;
baglı liste ile yaparız
diziyle yapabliriz
banka kuyrugu gibi queue
kuyrukta her zmn head den eklenir,tailde alınır
front kuyrktan silmeden en önde lkim var onu alıyom
araya ekeleme araya silme yok stacktaki gibi
sondan ekle bastan al : kuyruk yapısı
front ve rear dicez artık
linked list yaparız
diziuzerinde diresel bir yapı olusturabilirz
dizi uzerinde kaydırmalı yapabilirzi
öncelikli kuyruklar (priorty queues)
3 kutu çiz bunu yap ,hepsini yapıyosun
heap nedir bi bakın ögrenin
dizi tabanlı yıgın :
stackte :size ı bulcaz
linked list olusturmadan yapcaz node class felan
space complety nedşr ir linked listte :eklediğim kadardır
dizi tabanlı yaparsan size i nın sen belirliyon
linked listle yapıyosann size ı değişiyo
circular liked list aynısı diyip gectiii….
sonunun nextını head yapcan
yıgıt : stack : (yıgın ):
last in first out lifo
son giren ilk cıkar
ilk giren son cıkar
en son gelen eleman en ilk hizmeti alcak olan elemandır
stack gecici bir alandır
operasyoları
empty stack: boş yıgıt
push(koy) eleman eklemek için kullkanılır
girdi :nesne cıktı :nesne dir
nesne koyarsın
pop(al) eleman ceker
girdi : yok cıktı :nesne
top(): en son elemanı cıakrmadan geri döndrüür
girdi :yok cıktı :nesne
size() : depolanan nesne sayını geri döndürür
isEmpty(): yıgında nesne bulunup bulunmadıgı bilgisini geri döndürür
stack icerisnde list tuabilirzi
baska bir class tutabilirz
nerde kullanılıyo ?
web browserlardaki
java prog calıstıgında static değişkenler nere
dizi bazlı listede tek bir index alıp artırırız
baglantılı liste seklinde stack implemetasyonu headıra ekle headrdan al
stackta top a ekle yapcaz araya islem felan olmıyy
son dan silmek te yok