Hoş geldiniz!

Python'da Veri Yapıları ve Algoritmalar

Miriam Antona

Software Engineer

Algoritmalar ve veri yapılarının önemi

  • Veri yapıları ve algoritmalar bize
    • gündelik sorunları çözme olanağı sağlar
    • verimli kodla
  • Bu ders her programlama diliyle işlenebilir
Python'da Veri Yapıları ve Algoritmalar

Algoritmalar ve veri yapıları

  • Algoritma: bir sorunu çözen yönergeler bütünü

    1. Tasarım

      Bir algoritma tasarımının şematik resmi.

    2. Kod

      Bir algoritmanın kodunun şematik resmi.

  • Veri yapıları: bir algoritmayı çalıştırırken veriyi tutar ve işler
    • İleri veri yapıları: bağlı listeler, yığınlar, kuyruklar...
Python'da Veri Yapıları ve Algoritmalar

Bağlı listeler

Ekmek hazırlama adımlarını içeren bir bağlı liste görseli.

  • Bağlantılarla birbirine bağlanan veri dizisi
Python'da Veri Yapıları ve Algoritmalar

Bağlı listeler - yapı

Bağlı listedeki bir düğümün gösterimi.

Python'da Veri Yapıları ve Algoritmalar

Bağlı listeler - yapı

Bağlı listedeki bir düğümün, ilk bölümünde "DATA" sözcüğü olan gösterimi.

Python'da Veri Yapıları ve Algoritmalar

Bağlı listeler - yapı

Bağlı listedeki bir düğümün gösterimi: ilk bölümde "DATA", ikinci bölümde işaretçiyle "NEXT".

Python'da Veri Yapıları ve Algoritmalar

Bağlı listeler - yapı

Bir bağlı listenin iki düğümünün bağlantıyla birbirine bağlandığı gösterim.

Python'da Veri Yapıları ve Algoritmalar

Bağlı listeler - yapı

Bağlantılarla birbirine bağlanmış çok sayıda düğümün gösterimi.

Python'da Veri Yapıları ve Algoritmalar

Bağlı listeler - yapı

Son düğümü null'a işaret eden bir bağlı listenin gösterimi.

Python'da Veri Yapıları ve Algoritmalar

Bağlı listeler - yapı

İlk düğümünde "HEAD" yazan bir bağlı listenin gösterimi.

Python'da Veri Yapıları ve Algoritmalar

Bağlı listeler - yapı

Son düğümünde "TAIL" yazan bir bağlı listenin gösterimi.

  • Veriler bitişik bellek bloklarında tutulmak zorunda değildir
  • Veri, uygun olan herhangi bir bellek adresinde bulunabilir
Python'da Veri Yapıları ve Algoritmalar

Tek bağlı listeler

Tek bağlı listenin gösterimi.

  • Tek bağlantı: tek bağlı liste
Python'da Veri Yapıları ve Algoritmalar

Çift bağlı listeler

Çift bağlı listenin gösterimi.

  • İki yönlü iki bağlantı: çift bağlı liste
Python'da Veri Yapıları ve Algoritmalar

Bağlı listeler - gerçek kullanım

  • Diğer veri yapıları için temel:
    • yığınlar
    • kuyruklar
    • grafikler
  • Bilgiye ileri–geri gezinerek erişin
    • web tarayıcısı
    • müzik çalma listesi
Python'da Veri Yapıları ve Algoritmalar

Bağlı listeler - Node sınıfı

class Node:
  def __init__(self, data):
    self.data = data
    self.next = None
Python'da Veri Yapıları ve Algoritmalar

Bağlı listeler - LinkedList sınıfı

class LinkedList:
  def __init__(self):
    self.head = None
    self.tail = None
Python'da Veri Yapıları ve Algoritmalar

Bağlı listeler - yöntemler

  • insert_at_beginning()
  • remove_at_beginning()
  • insert_at_end()
  • remove_at_end()
  • insert_at()
  • remove_at()
  • search()
  • ...
Python'da Veri Yapıları ve Algoritmalar

Bağlı listeler - insert_at_beginning

Tek bağlı bir listenin gösterimi.

Python'da Veri Yapıları ve Algoritmalar

Bağlı listeler - insert_at_beginning

Tek bağlı bir liste ve yeni bir düğümün gösterimi,

 def insert_at_beginning(self, data):
    new_node = Node(data)

if self.head:
Python'da Veri Yapıları ve Algoritmalar

Bağlı listeler - insert_at_beginning

Yeni düğümü bağlanmış tek bağlı bir listenin gösterimi.

 def insert_at_beginning(self, data):
    new_node = Node(data)
    if self.head:
      new_node.next = self.head

Python'da Veri Yapıları ve Algoritmalar

Bağlı listeler - insert_at_beginning

Yeni düğümü bağlanmış ve bu düğümde "HEAD" yazan tek bağlı bir listenin gösterimi.

 def insert_at_beginning(self, data):
    new_node = Node(data)
    if self.head:
      new_node.next = self.head
      self.head = new_node

Python'da Veri Yapıları ve Algoritmalar

Bağlı listeler - insert_at_beginning

Boş bir bağlı listede yeni düğümün gösterimi.

 def insert_at_beginning(self, data):
    new_node = Node(data)
    if self.head:
      new_node.next = self.head
      self.head = new_node
    else:

self.tail = new_node self.head = new_node
Python'da Veri Yapıları ve Algoritmalar

Bağlı listeler - insert_at_end

  def insert_at_end(self, data):
    new_node = Node(data)
    if self.head:  

self.tail.next = new_node
self.tail = new_node
else:
self.head = new_node self.tail = new_node
Python'da Veri Yapıları ve Algoritmalar

Bağlı listeler - search

def search(self, data):

current_node = self.head
while current_node:
if current_node.data == data:
return True

"current_node" sözcüğü ilk düğümü işaret eden tek bağlı bir listenin gösterimi.

Python'da Veri Yapıları ve Algoritmalar

Bağlı listeler - search

def search(self, data):
  current_node = self.head
  while current_node:
    if current_node.data == data:
      return True
    else:
      current_node = current_node.next

"current_node" sözcüğü ikinci düğümü işaret eden tek bağlı bir listenin gösterimi.

Python'da Veri Yapıları ve Algoritmalar

Bağlı listeler - search

def search(self, data):
  current_node = self.head
  while current_node:
    if current_node.data == data:
      return True
    else:
      current_node = current_node.next

return False

"current_node" sözcüğü üçüncü düğümü işaret eden tek bağlı bir listenin gösterimi.

Python'da Veri Yapıları ve Algoritmalar

Bağlı listeler - örnek

Boş bir bağlı listede yeni bir düğümün gösterimi.

sushi_preparation = LinkedList()

sushi_preparation.insert_at_end("prepare")
Python'da Veri Yapıları ve Algoritmalar

Bağlı listeler - örnek

Bir bağlı listenin sonuna eklenen yeni bir düğümün gösterimi.

sushi_preparation = LinkedList()  
sushi_preparation.insert_at_end("prepare")
sushi_preparation.insert_at_end("roll") 

Python'da Veri Yapıları ve Algoritmalar

Bağlı listeler - örnek

Bir bağlı listenin başına eklenen yeni bir düğümün gösterimi.

sushi_preparation = LinkedList()  
sushi_preparation.insert_at_end("prepare")
sushi_preparation.insert_at_end("roll") 
sushi_preparation.insert_at_beginning("assemble")
Python'da Veri Yapıları ve Algoritmalar

Bağlı listeler - örnek

Bir bağlı listenin gösterimi.

sushi_preparation.search("roll")
True
sushi_preparation.search("mixing")
False
Python'da Veri Yapıları ve Algoritmalar

Ayo berlatih!

Python'da Veri Yapıları ve Algoritmalar

Preparing Video For Download...