Professional Documents
Culture Documents
List quiz :
phyton Java
Lists, Dictionary,Tuples, Sets Array
Linked list (skip list) Linked list (circular, skip list)
stack (Implementasi menggunakan Linked queue (Circular Queue, Priority Queue)
List)
Queue (Priority Queue)
total : 9
Phyton
• Lists, Dictionary,Tuples, Sets
Source code program :
# List Example
fruits = ['apple', 'banana', 'grape', 'orange']
print("List of Fruits:", fruits)
# Dictionary Example
student = {
"name": "Raissa",
"age": 18,
"gender": "Female"
}
print("\nStudent Information:", student)
# Tuple Example
colors = ("red", "green", "blue")
print("\nTuple of Colors:", colors)
# Set Example
numbers = {1, 2, 3, 4, 5, 5}
print("\nSet of Numbers:", numbers)
penjelasan Program:
Source code
# Python3 code for inserting element in skip list
import random
class Node(object):
'''
Class to implement node
'''
def __init__(self, key, level):
self.key = key
# list to hold references to node of different level
self.forward = [None]*(level+1)
class SkipList(object):
'''
Class for Skip list
'''
def __init__(self, max_lvl, P):
# Maximum level for this skip list
self.MAXLVL = max_lvl
'''
start from highest level of skip list
move the current reference forward while key
is greater than key of node next to current
Otherwise inserted current in update and
move one level down and continue search
'''
for i in range(self.level, -1, -1):
while current.forward[i] and \
current.forward[i].key < key:
current = current.forward[i]
update[i] = current
'''
reached level 0 and forward reference to
right, which is desired position to
insert key.
'''
current = current.forward[0]
'''
if current is NULL that means we have reached
to end of the level or current's key is not equal
to key to insert that means we have to insert
node between update[0] and current node
'''
if current == None or current.key != key:
# Generate a random level for node
rlevel = self.randomLevel()
'''
If random level is greater than list's current
level (node with highest level inserted in
list so far), initialize update value with
reference
to header for further use
'''
if rlevel > self.level:
for i in range(self.level+1, rlevel+1):
update[i] = self.header
self.level = rlevel
main()
penjelasan program :
Baris Petikan source code Penjelasan
Program
3-8 import random Mengimpor random modul python
class Node(object):
'''
Class to implement
node
'''
9-13 def __init__(self, key, level): def __init__(self, key, level)
self.key = key mwndwfinisikankostruktor dari 2
parameter – key dan level
self.forward =
[None]*(level+1) self.key = key menetapkan contoh
variabel key dari objek ke value passed
sebsgai key parameter
self.forward = [None]*(level+1)
menciptakan list forward/maju dengan
panjang level+1 dimana tiap elemen
ditetapkan none.
19-31 def __init__(self, def __init__(self, max_lvl, P)
max_lvl, P): mendefinisikan 2 parameter max_lvl dan
# Maximum P
level for this skip list
self.MAXLVL = self.MAXLVL = max_lvl menciptakan
max_lvl contoh variabel MAXLVL dan
menetapkan value max_lvl,
# P is the mempresentasikan level maximum yang
fraction of the nodes with level bisa ditamplkan pada skip list
# i references
also having level i+1 self.P = P Menciptakan contoh variabel
references P dan menetapkan value dari P.
self.P = P
self.header =
# create header self.createNode(self.MAXLVL, -1)
node and initialize key to -1 menciptakan kepala node atau skip list
self.header = menggunakan createNode.
self.createNode(self.MAXLVL,
-1) self.level = 0 menciptakancontoh
variabel level dan menetapkannya ke 0
# current level
of skip list
self.level = 0
33-49 # create new node Untuk memasukkan kunci baru,
def createNode(self, lvl, ia mencari melalui Skip List dari
key): level tertinggi ke level terendah.
n = Node(key, Pada setiap tingkat, ia
lvl) memeriksa apakah simpul
return n berikutnya di tingkat saat ini
memiliki kunci yang kurang dari
# create random level kunci target. Jika ya, ia akan
for node berpindah ke simpul tersebut dan
def randomLevel(self): mengulangi proses pada tingkat
lvl = 0 yang lebih rendah berikutnya.
while Jika tidak, ia akan menyimpan
random.random()<self.P and \ referensi ke simpul tersebut
dalam update array dan bergerak
lvl<self.MAXLVL:lvl ke tingkat yang lebih rendah
+= 1 berikutnya.
return lvl
Ketika mencapai tingkat paling
# insert given key in bawah, ia menyisipkan simpul
skip list baru dan memperbarui penunjuk
def insertElement(self, maju dari simpul-simpul yang
key): disimpan di update array untuk
# create update menunjuk ke simpul baru.
array and initialize it Karena node-node ini dijamin
update = berada di setiap tingkat di mana
[None]*(self.MAXLVL+1) node baru disisipkan atau lebih
current = tinggi, hal ini memastikan bahwa
self.header node baru terhubung dengan
benar ke node di setiap tingkat
dalam Skip List
main()
Screenshot output source code
class Node:
def __init__(self, data):
self.data = data
self.next = None
class LinkedList:
def __init__(self):
self.head = None
def printList(self):
temp = self.head
while(temp):
print(temp.data)
temp = temp.next
if __name__=='__main__':
# Membuat objek dari class LinkedList
linkedList = LinkedList()
linkedList.head.next = secondNode
secondNode.next = thirdNode
Penjelasan
Baris Petikan source code Penjelasan
Program
1-4 class Node: Class baru bernama node didefinisikan
def __init__(self, data): yang mana memiliki 2 variabel, data
self.data = data dan next. Variabel data menyimpan
self.next = None
value dari node dan next menyimpan
referensi node selanjutnya.
6-8 class LinkedList: Class baru bernama LinkedList
def __init__(self): didefinisikan, yang mana memiliki
self.head = None satu variabel, head yang mana
memunjuk ke node pertama pada
linked list
10-14 def printList(self): Metode printList(self) didefinisikan di
temp = self.head dalam Linked List class yang mana
while(temp): digunakan untuk trnsversi melalui
print(temp.data) linked list, dimulai dari head node,
temp = temp.next dan cetak data yang disimpan pada
tiap node
16-18 if__name__=='__main__': if__name__=='__main__': didalamnya
# Membuat objek dari objek linked list dibuat menggunakan
class LinkedList variabel linked list.
linkedList = LinkedList()
21-26 linkedList.head = Menambahkan node ke dalam list
Node(5)
secondNode = Node(2) Dan linkedList.head dijadikan
thirdNode = Node(7) secondNode dan variabel next
linkedList.head.next = secondNode adalah thirdNode
secondNode
secondNode.next = thirdNode
29 linkedList.printList() Mencetak linked list
• Priority Queue
Source code
import queue
Java
• Array
Source Code
public class SimpleArrayExample {
public static void main(String[] args) {
Penjelasan
Baris Petikan source code Penjelasan
Program
1 public class Deklarasi public class yang
SimpleArrayExample { mengandong satu metode, main
2 public static void main(String[] Metode main didklarasikan disini
args) { yang mana berarti bisa diakses di luar
dari class dan tidak mengembalikan
value
5 int[] myArray = {1, 2, 3, 4, 5}; Dibuat integer myArray berisi 5
elemen. Dilaksanakan menggunakan
kurung kurawal untuk menutup
elemen
8-9 for (int i = 0; i < Menggunakan pengulangan untuk
myArray.length; i++) { mencetak elemen ke-i
System.out.println(myArray[i]);
• Circular List
Source Code
Node(int value) {
this.value = value;
}
}
Penjelasan
Baris Petikan source code Penjelasan
Program
1-3 public class Dideklarasikan class ini yang berisi 2
CircularLinkedList { variabel : head dan tail keduanya
private Node head; bertipe node
private Node tail;
5-7 private static class Node { Didefinisikan nested class node yang
private int value; punya 2 variabel : value (integer) dan
private Node next; next (refrensi ke node selanjutnya
pada list)
System.out.print(current.value +
" ");
current = current.next;
} while (current != head);
System.out.println();
}
41-48 public static void Buat pengulangan CircularLinkedList,
main(String[] args) { tambahkan 3 node dan panggil
CircularLinkedList cll = display() untuk mencetak value semua
new CircularLinkedList(); node pada list
cll.add(1);
cll.add(2);
cll.add(3);
cll.display();
}
}
• Skip List
Source Code
class GFG {
int randomLevel()
{
float r = (float)Math.random();
int lvl = 0;
while (r < P && lvl < MAXLVL) {
lvl++;
r = (float)Math.random();
}
return lvl;
}
lst.insertElement(3);
lst.insertElement(6);
lst.insertElement(7);
lst.insertElement(9);
lst.insertElement(12);
lst.insertElement(19);
lst.insertElement(17);
lst.insertElement(26);
lst.insertElement(21);
lst.insertElement(25);
lst.displayList();
}
}
Penjelasan
Baris Petikan source code Penjelasan
Program
3 class GFG { Kode dimulai
dengan deklarasi
kelas GFC
6-18 static class Node { Pada kelas ini,
int key; static nested node
dideklarasi,
// Array to hold pointers to node of Merepresentasikan
different level node pada skip list
Node forward[]; dan memiliki 2
field : kunci
Node(int key, int level) integer dan array
{ bernama forward
this.key = key; yang menyimpan
pointer ke node
// Allocate memory to forward
pada level berbeda
forward = new Node[level + 1];
}
• Circular Queue
Source Code
public CircularQueue(int k) {
queue = new int[k];
front = -1;
rear = -1;
size = 0;
}
Penjelasan
Baris Petikan source code Penjelasan
Program
public class CircularQueue { Mendefinisikan kelas
private int[] queue; CircularQueue dengan private
private int front; fields queue, front, rear, dan size.
private int rear; Kostruktor insialisasi queue ke
private int size; array dengan ukuran k dan
menetapkan font, rear, dan size
ke -1,-1,dan 0
public CircularQueue(int k)
{
queue = new int[k];
front = -1;
rear = -1;
size = 0;
}
public boolean enQueue(int value) { Metode enQueue menambahkan
if (isFull()) { elemen ke queue. Apabila queue
return false; penuh akan kembali ke false jika
} idak maka akan mengecek
if (isEmpty()) { apakah queue kososng dan
front = 0; menetapkan front ke 0. Ini aka
} inkremasi rear dengan 1,
rear = (rear + 1) % queue.length; mengambil modulus
queue[rear] = value; queue.lenght untuk menangani
size++; aspek circular dari queue dan
return true; menetapkan elemen queue[rear]
} ke value. Akhirnya diinkremasi
size dan kembali ke true
public boolean deQueue() { Metode deQueue mengurangi
if (isEmpty()) { elemen dari queue. Apabila
return false; queue kosong akan kembali ke
} false jika front dan rear sama,
if (front == rear) { queue reset dengan pengaturan
front = -1; front dan rear kembali ke -1. Jika
rear = -1; tidak front inkremasi dengan 1,
} else { mengambik modulus
front = (front + 1) % queue.lenght .Akhirnya
queue.length; diinkremasi size dan kembali ke
} true
size--;
return true;
}
public int Front() { Metode front mengembalikan
if (isEmpty()) { value elemen di depan queue.
return -1; Apabila queue kosong, kembali -
} 1
return queue[front];
}
public int Rear() { Metode rear mengembalikan
if (isEmpty()) { elemen di akhir queue. Apabila
return -1; queue kosong, kembali ke -1
}
return queue[rear];
}
public boolean isEmpty() { Dua metode is Empty dan isFull
return size == 0; mengembalikan benar apabila
} queue kosong atau penuh
public boolean isFull() {
return size == queue.length;
}
public static void main(String[] args) { Menambahkan 3 elemen pada list
CircularQueue queue = new dan menampilkannya pada
CircularQueue(3); output.
queue.enQueue(1);
queue.enQueue(2);
queue.enQueue(3);
System.out.println(queue.enQueue(4));
// false, queue penuh
System.out.println(queue.Rear());
// 3
queue.deQueue();
System
• Priority Queue
Source Code
import java.util.PriorityQueue;
Penjelasan
Baris Petikan source code Penjelasan
Program
import java.util.PriorityQueue; Mengimpor class dari paket java.util .
Class ini menyediakan implementasi
dari struktur data priority queue