0% menganggap dokumen ini bermanfaat (0 suara)
2 tayangan12 halaman

1.implementasi Linked List

Diunggah oleh

khaizfirdaus87
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
2 tayangan12 halaman

1.implementasi Linked List

Diunggah oleh

khaizfirdaus87
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 12

Implementasi linked list & queue

1.Implementasi Linked list


2
class Node:

def __init__(self, data):

self.data = data

self.next = None

class Stack:

def __init__(self):

self.top = None

def push(self, data):

new_node = Node(data) # Membuat node baru dengan data yang diberikan

new_node.next = self.top # Node baru menunjuk ke node yang sebelumnya ada di atas

self.top = new_node # Mengubah top untuk menunjuk ke node baru

def pop(self):

if self.is_empty():

print("Stack kosong. Tidak bisa pop.")

return

self.top = self.top.next # Menghapus elemen teratas stack

def peek(self):

3
if self.is_empty():

print("Stack kosong. Tidak bisa peek.")

return -1

return self.top.data # Mengembalikan data dari elemen teratas stack

def is_empty(self):

return self.top is None # Memeriksa apakah stack kosong

# Contoh penggunaan stack

stack = Stack()

stack.push(1)

stack.push(2)

stack.push(3)

print("Elemen teratas dari stack:", stack.peek())

stack.pop()

print("Elemen teratas dari stack setelah pop:", stack.peek())

4
2. Implementasi Queue

5
6
class Node:

def __init__(self, data):

self.data = data

self.next = None

class Queue:

def __init__(self):

self.front = None

self.rear = None

def enqueue(self, data):

new_node = Node(data) # Membuat node baru dengan data yang diberikan

if self.is_empty():

self.front = self.rear = new_node

else:

self.rear.next = new_node # Node baru menunjuk ke node yang sebelumnya ada di


belakang

self.rear = new_node # Mengubah rear untuk menunjuk ke node baru

def dequeue(self):

if self.is_empty():

7
print("Queue kosong. Tidak bisa dequeue.")

return

self.front = self.front.next # Menghapus elemen depan queue

def peek(self):

if self.is_empty():

print("Queue kosong. Tidak bisa peek.")

return -1

return self.front.data # Mengembalikan data dari elemen depan queue

def is_empty(self):

return self.front is None # Memeriksa apakah queue kosong

# Contoh penggunaan queue

queue = Queue()

queue.enqueue(1)

queue.enqueue(2)

queue.enqueue(3)

print("Elemen depan dari queue:", queue.peek())

8
queue.dequeue()

print("Elemen depan dari queue setelah dequeue:", queue.peek())

9
PERBEDAAN IMPLEMENTASI STACK DAN
QUEUE MENGGUNAKAN ARRAY

Perbedaan utama antara implementasi stack dan queue menggunakan


linked list dan array adalah dalam cara data disimpan, diakses, dan
operasi yang dapat dilakukan. Berikut adalah perbedaannya:

Implementasi Stack Menggunakan Array

1. Penyimpanan Data

- Dalam implementasi stack menggunakan array, data disimpan secara


sekuensial dalam array.

- Elemen-elemen stack ditempatkan dalam indeks-indeks array yang


berurutan.

2. Akses Data

- Elemen teratas stack adalah elemen yang berada di indeks terakhir


(indeks terbesar) dalam array.

- Untuk mengakses elemen teratas, Anda hanya perlu mengakses


elemen pada indeks terakhir array.

3. Operasi

- Push: Menambahkan elemen ke indeks terakhir array (menambahkan


elemen teratas).

- Pop: Menghapus elemen teratas dari indeks terakhir array.

- Peek: Membaca nilai elemen teratas pada indeks terakhir array.

10
Implementasi Queue Menggunakan Array

1. Penyimpanan Data

- Dalam implementasi queue menggunakan array, data disimpan


secara sekuensial dalam array.

- Elemen-elemen queue ditempatkan dalam indeks-indeks array yang


berurutan.

2. Akses Data

- Elemen depan queue adalah elemen yang berada di indeks terakhir


(indeks terkecil) dalam array.

- Elemen belakang queue adalah elemen yang berada di indeks


terakhir (indeks terbesar) dalam array.

- Untuk mengakses elemen depan dan belakang, Anda hanya perlu


mengakses elemen pada indeks terkecil dan terbesar array.

3. Operasi

- Enqueue: Menambahkan elemen ke indeks terakhir array


(menambahkan elemen belakang).

- Dequeue: Menghapus elemen depan dari indeks terkecil array.

- Peek (Front): Membaca nilai elemen depan pada indeks terkecil array.

- Peek (Rear): Membaca nilai elemen belakang pada indeks terbesar


array.

11
Implementasi Stack dan Queue Menggunakan Linked List

1. Penyimpanan Data

- Dalam implementasi stack dan queue menggunakan linked list, data


disimpan sebagai simpul-simpul yang terhubung.

- Tidak ada indeks array yang digunakan, hanya referensi antar simpul.

2. Akses Data

- Elemen teratas stack atau elemen depan queue adalah simpul yang
paling atas dalam linked list.

- Elemen belakang queue adalah simpul yang paling bawah dalam


linked list.

3. Operasi

- Push (Stack) atau Enqueue (Queue): Menambahkan simpul baru di


atas elemen teratas stack atau di belakang elemen belakang queue.

- Pop (Stack) atau Dequeue (Queue): Menghapus simpul teratas stack


atau simpul depan queue.

- Peek: Membaca nilai elemen teratas stack atau elemen depan queue.

Perbedaan utama adalah dalam cara data disimpan dan diakses. Stack
menggunakan prinsip "Last-In, First-Out" (LIFO) dan array, sementara
queue menggunakan prinsip "First-In, First-Out" (FIFO) dan array.
Implementasi dengan linked list menghilangkan pembatasan array,
sehingga memungkinkan penambahan dan penghapusan elemen
secara dinamis.

12

Anda mungkin juga menyukai