Week 6: Bağlı Liste (Linked List) BAĞLI LİSTE KAVRAMI TEKİL (SINGLE) BAĞLI LİSTE ÇİFT (DOUBLE) BAĞLI LİSTE DAİRESEL (CIRCULAR) BAĞLI LİSTE

Benzer belgeler
Week 7. Düğüm bulma Tekli bağlı liste: phead ve ptail Dairesel bağlı liste Çift bağlı liste

VERİ YAPILARI LİSTELER. Yrd. Doç. Dr. Murat GÖK Bilgisayar Mühendisliği Bölümü YALOVA ÜNİVERSİTESİ

YZM 2116 Veri Yapıları

Week 9: Trees 1. TREE KAVRAMI 3. İKİLİ AĞAÇ DİZİLİMİ 4. İKİLİ ARAMA AĞACI 2. İKİLİ AĞAÇ VE SUNUMU > =

BAĞLI LİSTELER BAĞLI LİSTELER

Yrd. Doç. Dr. Caner ÖZCAN

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler

Bölüm 6. Karma. Olcay Taner Yıldız. O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, / 31

YZM 2116 Veri Yapıları

int main(void) { int num = 0; int input = 1; int retval = 0; struct NODE *nodepointer; nodepointer = (struct NODE *)malloc(sizeof(struct NODE));

AHMET YESEVİ ÜNİVERSİTESİ BİLİŞİM SİSTEMLERİ VE MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ LİSANS DÖNEM ÖDEVİ

Veri Yapıları ve Algoritmalar dönem

Yrd. Doç. Dr. Caner ÖZCAN

Veri Yapıları. Amaçlar: Temel Veri Yapılarını Tanımlamalı Veri Yapılarını Veri Modeli ve Türlerini Öğreneceksiniz. İçindekiler:

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

Final Sınavı Soruları Bahar 2018

1 RUBY HAKINDA 1 Ruby nin Gelişim Hikayesi 1 Neden Ruby? 1 Neden Bu Kadar Popüler? 2

Alıştırma 1: Yineleme

YZM 2116 Veri Yapıları

Veri Modelleri. Ağaç Veri Modeli. Ağaç Veri Modeli

BAĞLAÇLI LİSTELER LINKED LISTS

Max - Min Heap Tree (Max ve Min Yığıt Ağaçları) Veri Yapıları ve Algoritmalar 2 - Mustafa EGE Ders Notları

BAĞLAÇLI LİSTELER LINKED LISTS

VERİ YAPILARI DERS NOTLARI BÖLÜM 5 QUEUE (KUYRUK) Yard. Doç. Dr. Deniz KILINÇ

Algoritma Geliştirme ve Veri Yapıları 7 Liste ve Bağlantılı Liste. Mustafa Kemal Üniversitesi

Veri Yapıları Laboratuvarı

Nesne İşaretçileri. Binnur Kurt Bilgisayar Mühendisliği Bölümü İstanbul Teknik Üniversitesi. Sınıf Yapısı. Kalıtım Çok Şekillilik

static void dizi_24() { Random rnd = new Random(); int [] tutulan=new int[10]; int dogru;

BIL222 Veri Yapıları ve Algoritmalar

Veri Tabanı SQL Server ve Management Studio kurulum linkleri:

AVL Agacı {\} /\ Suhap SAHIN Onur GÖK

1 JAVASCRIPT NEDİR? 1

Ders 4: Diziler (Arrays( Arrays) barisgokce.com

SOMEBODY ELSE'S. ( DATA STRUCTURES and ALGORITHMS ) Veri Yapıları ve Algoritmaları

AĞAÇLAR. Doç. Dr. Aybars UĞUR

2 PYTHON A GIRIŞ 13 PyCharm İle Python Projesi Oluşturma 15 Projenin Çalıştırılması 18 İlk Python Programımız 19 Açıklama Satırları 21

Veri Yapıları ve Algoritmalar dönem

VERİ YAPILARI DERS NOTLARI BÖLÜM 1 GİRİŞ. Yard. Doç. Dr. Deniz KILINÇ

SQL Komutları (2) Uzm. Murat YAZICI

YIĞINLAR YIĞINLAR. Yığın İşlemleri Postfix, Prefix, Infix. G. Ü. Bilgisayar Mühendisliği Bölümü

Bölüm 5. Ağaç. Olcay Taner Yıldız. O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, / 73

Bilgisayar Programcılığı. Ögr. Gör. Cansu AYVAZ GÜVEN

Algoritmalar. İkili Arama Ağaçları. Bahar 2016 Doç. Dr. Suat Özdemir 1

AĞAÇLAR TREES. Doç. Dr. Aybars UĞUR

Görsel Programlama DERS 04. Görsel Programlama - Ders04/ 1

Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması. Mustafa Kemal Üniversitesi

BİL1001 Bilgisayar Bilimlerine Giriş 1

Maltepe Üniversitesi Bilgisayar Mühendisliği Bölümü Veri Tabanı ve Yönetimi (BİL 301)

YZM VERİ YAPILARI DERS#9: HASH FONKSİYONLARI

Veri Yapıları. Yrd. Doç. Dr. Şadi Evren ŞEKER

Örnek1: #include <iostream> #include <string> using namespace std;

HSancak Nesne Tabanlı Programlama I Ders Notları

Stack Islemleri. Postfix ve Infix notasyonlari. Stack ozellikleri

elemanlarının gezilmesine yönelik bir örnek sunulmuştur, inceleyiniz.

Bölüm 10. Altprogramların gerçeklenmesi ISBN

Çanakkale Onsekiz Mart Üniversitesi. Bilgisayar Mühendisliği Bölümü

7.Hafta Dengeli Arama Ağaçları (Red - Black Tree)

Algoritma Geliştirme ve Veri Yapıları 2 Veri Modelleri. Mustafa Kemal Üniversitesi

#include <stdio.h> int main(void) { float sayi; float * p; p = &sayi; printf("deger girin:"); scanf("%f", p); printf("girilen deger:%f\n", *p);

YAPISAL SORGULAMA DİLİ (SQL)

Yigin & Kuyruk {\} /\ Suhap SAHIN Onur GÖK

Standard Template Library

Ağaçlar (Trees) Ağaçlar (Trees)

1 C#.NET GELİŞTİRME ORTAMI 1 Visual Studio 2015 Arayüzü 4 Menu Window 6 Solution Explorer 7 Properties Window 8 Server Explorer 8 Toolbox 9

Fiziksel Tasarım Konuları. Dosya Organizasyon Teknikleri Kayıt Erişim Yöntemleri Veri Yapıları

DOSYA ORGANİZASYONU. Ağaç Yapıları ÖZLEM AYDIN TRAKYA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ

SQL PROGRAMLAMA. Bir batch, bir arada bulunan bir dizi SQL deyimidir. Batch ayıracı GO deyimidir.

BİLG Dr. Mustafa T. Babagil 1

KUYRUKLAR QUEUES. Doç. Dr. Aybars UĞUR

NESNEYE YÖNELİK PROGRAMLAMA

BLM 111 ALGORİTMA VE PROGRAMLAMA I

Nesne Tabanlı Programlama

AĞAÇ-TREE VERİ YAPISI

BBS 514 YAPISAL PROGRAMLAMA (STRUCTURED PROGRAMMING)

YMT219 VERİ YAPILARI ÖDEV-1

BMB204. Veri Yapıları Ders 9. B+ Ağacı, Hash, Heap. Erdinç Uzun NKÜ Çorlu Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü

ALGORİTMA VE PROGRAMLAMA II

TRAKYA BİRLİK WEBSİTE YÖNETİM PANELİ. Kullanıcı Dokümantasyonu

YZM 2116 Veri Yapıları

#include<stdio.h> #include<conio.h> #define doktorsayisi 3. typedef struct dr{ int ay1, ay2, ay3, ay4; } doktor; float hesapla(doktor dktr){

Cybersoft Bilişim Teknolojileri Sunucu Tarafı Programlaması Kursu Final soruları. Tarih: 27 Kasım 2010 Saat: 13:30 Süre: 3 saat

Programlama Dilleri 1. Ders 4: Diziler

Final Sınavı Örnek Soruları Bahar 2018

Arasınav Örnek Soruları Bahar 2018

Veri Tabanı-I 9.Hafta

Bu işleçlerin dışında, aşağıda belirtilen karşılaştırma işleçlerinden de yararlanılır.

Arama Algoritmaları. Doğrusal Arama ve Binary Arama

Kullanıcı Dökümanı. Flash B2B. Versiyon 0.1

Jval tipi. Genel veri yapılarını kullanacağımız zaman Jval den faydalanırız.önemli olanlar aşağıda mevcuttur:

Ders - 7 while döngüsü

VERİTABANI. SQL (Structured Query Language)

«BM364» Veritabanı Uygulamaları

20461C Querying Microsoft SQL Server Modül Seviye Belirleme Testi

Aşağıdaki programı inceleyip ekrana ne yazacağını söyleyebilir misiniz?

İnternet Programcılığı Öğr. Gör. Serkan AKSU PHP de Dizi-Değişkenler, Nesneler. Dizi Oluşturma. Tek Boyutlu Diziler

ALGORİTMA VE PROGRAMLAMA I

DOSYA ORGANİZASYONU. Sıralı erişimli dosya organizasyonu yöntemleri ÖZLEM AYDIN TRAKYA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ

Data Programming SQL Language. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

Temel Bilgisayar Programlama Final Sınavı Çalışma Notları

Transkript:

Week 6: Bağlı Liste (Linked List) BAĞLI LİSTE KAVRAMI TEKİL (SINGLE) BAĞLI LİSTE ÇİFT (DOUBLE) BAĞLI LİSTE DAİRESEL (CIRCULAR) BAĞLI LİSTE

BAĞLI LİSTE KAVRAMI Derleme zamanında boyutunun bilinmesine ihtiyaç yoktur (dinamik veri yapısı). Bir linked list veri elemanlarının dinamik listesini modellemek için kullanılan bir veri yapısıdır. Bu yüzden bağlı liste çalışması önemli veri yapılarından biridir.

Dizi ve BAĞLI LİSTE DİZİ Sıralı eşleşmeyi destekler, sabit bir veri yapısıdır Bir dizide herhangi bir pozisyona ekleme veya pozisyondan silme pahalı bir operasyondur. Bağlı Liste Elemanların sabit olarak yerleşmesine gerek yoktur. Bir eleman listeye bağlanabilmek için bir önceki elemana ihtiyaç duyar Bir eleman listeye eklenince bir sonraki elemanın adresini saklar.

Dizi ve BAĞLI LİSTE Array: max length=7 0 1 2 3 4 5 6 X X X X 0 1 2 3 4 5 6 Sıra numarasına göre elemanı al Linked List: max length=18 0 1 2 3 4 5 6 X 7 8 9 X 10 11 X 12 13 14 X 15 16 17 18

Bağlı liste tipleri 1 data Link data Link NULL data Link data Link 2 Link 3 data Link Link data Link data data LinkLink data 4 LinkLink LinkLink

Bağlı listeleri oluştururken 4 konu 1. Yapı Veri elemanı Bağlantı alanı elemanı 2. Elemanlar arasında bağlantı kurma şekli İlk, son, orta eleman 3. Tüm liste elemanlarını almak için kaç tane düğüme ihtiyaç var 4. Temel işlemler: Yeni eleman ekleme (her pozisyon) Silme (her pozisyondan) Bulma

data Link data Link NULL 1. Yapı 1. Yapı Veri elemanı Bağlantı alanı elemanı 2. Elemanlar arasında bağlantı kurma şekli İlk, son, orta eleman 3. Tüm liste elemanlarını almak için kaç tane düğüme ihtiyaç var 4. Temel işlemler: Yeni eleman ekleme (her pozisyon) Silme (her pozisyondan) Bulma

1. Yapı struct Node int data; Node *link; ;

1. Yapı: tek düğüm ile nasıl çalışırız Node a; a.data=10; a.link=null; cout<<a.data; Node *b; b=new Node; b->data=20; b->link=null; cout<<b->data; delete b; Compare??? What is the different?

2. Elemanlar arasında bağ kurmanın yolu İlk, son, orta eleman data Link data Link data Link data Link NULL Head Middle Last

3. Tüm liste elemanlarını almak için kaç tane düğüme ihtiyaç var ptail data Link data Link data Link data Link NULL phead phead, ptail değerlerini nasıl saklarız? Type 1: Node *phead=null, *ptail=null; Type 2: typedef struct Node *List; List phead, ptail;

4. Temel işlemler: p data Link data Link data Link NULL Insert node Remove node creating new node

4. Temel işlemler: yeni bir düğüm oluşturma Node * createnewnode(int X) Node *p=new Node; If (p!=null) p->data=x; p->link=null; return p; p data Link NULL

: sadece Phead ile void addnodeatfirst(node *newnode) if (phead==null) phead =newnode; else newnode->next=phead; phead =newnode; Insert Node at First Burada liste elemanı listenin sonuna değil başına eklenmektedir.

: sadece Phead ile void displaylist() node *temp=h; while (temp!=null) cout<<temp->data<<" "; temp=temp->next; Düğüm arama

: sadece Phead ile void RemoveNodeatFirst() if (phead!=null) node *t= phead; phead = phead ->next; delete t; Baştan düğüm silme İlk eleman silinince, sıradaki eleman ilk eleman olur.

: sadece Phead ile node *find(int key) node *temp=h; while (temp!=null && temp->data!=key) temp=temp->next; return temp; Find Node Listenin sonu geldiğinde veya eleman bulunduğunda döngüden çıkılır, Döngüden çıkıldığı anda eldeki temp değeri ne ise aranan elemanı adresi Odur.

: sadece Phead ile void removeatlast() node *t=h; node *truoc=t; while (t->next!=null) truoc=t; t=t->next; truoc->next=null; delete t; Remove Node at Last t, sıradaki düğümü, truoc ise onun adresini tutar, yani truoc aslında bir önceki elemandır. Son elemana gelene kadar sırayla kayıtlar arasında gezilir en sonunda ise; truoc->next=null ataması ve delete t komutu ile Sondaki eleman silinmiş olur.

: sadece Phead ile void insertatlast(node *newnode) node *t=h; while (t->next!=null) t=t->next; Sona düğüm ekleme t->next=newnode; Son düğüme kadar sırayla kayıtlar arasında gezilir, son düğüme gelince; t->next=newnode; ile sıradaki eleman sona eklenmiş olur.

: Phead ve ptail ile 4. temel işlemler: yeni düğüm ekle phead ptail data Link data Link data Link NULL data Link

4. Temel işlemler: Liste başına düğüm ekle void Insert_First (node *newnode) if ( ptail == NULL ) phead=ptail =newnode ; else newnode->next=phead ; phead=newnode; ptail aynı kalır phead güncellenir.

4. Temel işlemler: Liste sonuna düğüm ekle void Insert_Last (node *newnode) void Insert_Last (node *newnode) if ( ptail == NULL ) phead=ptail =newnode ; else ptail->next=newnode ; ptail=newnode;

4. Temel işlemler: Bir düğümden sonra düğüm ekleme void Insert_after (node *newnode,node *p) If (p!=ptail) newnode->next=p>next; p->next=newnode; else insert_last (newnode);

4. Temel işlemler: baştan bir düğüm silme void removenodeatfirst () void removenodeatfirst () If (phead!=null) Node *temp=phead; phead = phead ->next; delete temp;

4. Temel işlemler: bir düğümden sonrakini silme void removenodeafter (node *p) Node *temp=p>next; p->next=p->next->next; delete temp;

4. Temel işlemler: sondaki elemanı sil void removenodeatlast () void removenodeatlast () node *t=phead; node *truoc=t; while (ptail->next!=null) truoc=t; t=t->next; delete ptail; // veya delete t ptail=truoc; ptail->next=null;

4. Temel işlemler: Bütün düğümleri tara Void Display() Void Display() node *p=phead; while (p!=null) cout<<p->data<< ; p=p->next;

4. Basic operations: count number of nodes int Count () int Count () int count=0; node *p=phead; while (p!=null) count+=1; p=p->next; return count;

2.Singly Linked List 4. Basic operations: Listeyi Sil void removelist () Node *p=phead; While (p!=null) Node *temp=p; p = p ->next; delete temp;

Sadece phead kullanarak aşağıdaki özellikleri yerine getiren bir program yazınız Display menu Add one node at first Add one node at last Add many node at first Add many node at last Select and display n(th) node Find one node Add one node after select node Display node count Display List Remove one node Remove List Get sum of all nodes