Selamat datang!

Struktur Data dan Algoritma di Python

Miriam Antona

Software Engineer

Pentingnya algoritma dan struktur data

  • Struktur data dan algoritma membantu kita
    • menyelesaikan masalah sehari-hari
    • dengan kode efisien
  • Kursus ini dapat diajarkan dalam bahasa pemrograman apa pun
Struktur Data dan Algoritma di Python

Algoritma dan struktur data

  • Algoritma: kumpulan instruksi untuk menyelesaikan masalah

    1. Desain

      Gambar skematis perancangan algoritma.

    2. Kode

      Gambar skematis kode algoritma.

  • Struktur data: menampung dan memanipulasi data saat menjalankan algoritma
    • Struktur data lanjutan: linked list, stack, queue...
Struktur Data dan Algoritma di Python

Linked list

Contoh visual linked list yang memuat langkah membuat roti.

  • Urutan data yang terhubung lewat tautan
Struktur Data dan Algoritma di Python

Linked list - struktur

Representasi sebuah simpul pada linked list.

Struktur Data dan Algoritma di Python

Linked list - struktur

Representasi sebuah simpul pada linked list dengan kata "DATA" di bagian pertama.

Struktur Data dan Algoritma di Python

Linked list - struktur

Representasi sebuah simpul pada linked list dengan kata "DATA" di bagian pertama, dan "NEXT" dengan penunjuk di bagian kedua.

Struktur Data dan Algoritma di Python

Linked list - struktur

Representasi dua simpul linked list yang terhubung dengan tautan.

Struktur Data dan Algoritma di Python

Linked list - struktur

Representasi beberapa simpul linked list yang saling terhubung.

Struktur Data dan Algoritma di Python

Linked list - struktur

Representasi linked list di mana simpul terakhir menunjuk ke null.

Struktur Data dan Algoritma di Python

Linked list - struktur

Representasi linked list dengan kata "HEAD" pada simpul pertama.

Struktur Data dan Algoritma di Python

Linked list - struktur

Representasi linked list dengan kata "TAIL" pada simpul terakhir.

  • Data tidak perlu disimpan dalam blok memori yang berurutan
  • Data dapat berada di alamat memori mana pun yang tersedia
Struktur Data dan Algoritma di Python

Singly linked list

Representasi singly linked list.

  • Satu tautan: singly linked list
Struktur Data dan Algoritma di Python

Doubly linked list

Representasi doubly linked list.

  • Dua tautan dua arah: doubly linked list
Struktur Data dan Algoritma di Python

Linked list - penggunaan nyata

  • Mengimplementasikan struktur data lain:
    • stack
    • queue
    • graph
  • Akses informasi maju dan mundur
    • peramban web
    • daftar putar musik
Struktur Data dan Algoritma di Python

Linked list - kelas Node

class Node:
  def __init__(self, data):
    self.data = data
    self.next = None
Struktur Data dan Algoritma di Python

Linked list - kelas LinkedList

class LinkedList:
  def __init__(self):
    self.head = None
    self.tail = None
Struktur Data dan Algoritma di Python

Linked list - metode

  • insert_at_beginning()
  • remove_at_beginning()
  • insert_at_end()
  • remove_at_end()
  • insert_at()
  • remove_at()
  • search()
  • ...
Struktur Data dan Algoritma di Python

Linked list - insert_at_beginning

Representasi singly linked list.

Struktur Data dan Algoritma di Python

Linked list - insert_at_beginning

Representasi singly linked list dan simpul baru,

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

if self.head:
Struktur Data dan Algoritma di Python

Linked list - insert_at_beginning

Representasi singly linked list dengan simpul baru yang terhubung.

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

Struktur Data dan Algoritma di Python

Linked list - insert_at_beginning

Representasi singly linked list dengan simpul baru terhubung dan kata "HEAD" pada simpul ini.

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

Struktur Data dan Algoritma di Python

Linked list - insert_at_beginning

Representasi simpul baru pada linked list kosong.

 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
Struktur Data dan Algoritma di Python

Linked list - 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
Struktur Data dan Algoritma di Python

Linked list - search

def search(self, data):

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

Representasi singly linked list dengan kata "current_node" menunjuk ke simpul pertama.

Struktur Data dan Algoritma di Python

Linked list - 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

Representasi singly linked list dengan kata "current_node" menunjuk ke simpul kedua.

Struktur Data dan Algoritma di Python

Linked list - 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

Representasi singly linked list dengan kata "current_node" menunjuk ke simpul ketiga.

Struktur Data dan Algoritma di Python

Linked list - contoh

Representasi simpul baru pada linked list kosong.

sushi_preparation = LinkedList()

sushi_preparation.insert_at_end("prepare")
Struktur Data dan Algoritma di Python

Linked list - contoh

Representasi simpul baru yang ditambahkan di akhir linked list.

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

Struktur Data dan Algoritma di Python

Linked list - contoh

Representasi simpul baru yang ditambahkan di awal linked list.

sushi_preparation = LinkedList()  
sushi_preparation.insert_at_end("prepare")
sushi_preparation.insert_at_end("roll") 
sushi_preparation.insert_at_beginning("assemble")
Struktur Data dan Algoritma di Python

Linked list - contoh

Representasi linked list.

sushi_preparation.search("roll")
True
sushi_preparation.search("mixing")
False
Struktur Data dan Algoritma di Python

Ayo berlatih!

Struktur Data dan Algoritma di Python

Preparing Video For Download...