MODUL 2 Linked List
MODUL 2 Linked List
00
NAMA PRAKTIKAN :
1. ADHITYA DWI P [1234010019]
2. FADHIL MUHAMMAD [1234010033]
ASISTEN :
1. ADI KISWANTO PUTRA PRATAMA [1134010057]
2. ALFIYAN BAHARUDDIN [1134010046]
Modul :2
Rombongan : D3
Grup :8
- Main Program
1. Start
2. Proses N=Nama.new, Menu=0, i=1 , head=kosong, tail=kosong
3. Masukkan Banyak data
4. Jika i <= banyak bernilai benar lanjut ke langkah 5 , jika salah ke langkah 8
5. “Masukkan nama” isi
6. Panggil fugsi n.insert(isi)
7. Proses x=x+1, kembali ke langkah 4
8. Jika menu <= 6 bernilai benar lanjut ke langkah 9, jika salah ke langkah 34
9. Masukkan pilihan menu
10. Jika menu=1 bernilai benar lanjut ke langkah 11, jika salah ke langkah 18
11. “Masukkan nama sesudah” nama
12. “Masukkan banyak data” banyak
13. Proses i=1
14. Jika i <= banyak bernilai benar lanjut ke langkah 15, jika salah ke langkah 8
15. “Masukkan nama baru” isi
16. Panggil fungsi n.append(nama,isi)
17. Proses i=i+1, kembali ke langkah 14
18. Jika menu=2 bernilai benar lanjut ke langkah 18, jika salah ke langkah 26
19. “Masukkan nama sebelum” nama
20. “Masukkan banyak data” banyak
21. Proses i=1
22. Jika i <= banyak bernilai benar lanjut ke langkah 23, jika salah ke langkah 8
23. “Masukkan nama baru” isi
24. Panggil fungsi n.prepend(nama,isi)
25. Proses i=i+1, kembali ke langkah 22
26. Jika menu=3 bernilai benar lanjut ke langkah 27, jika salah ke langkah 29
27. Panggil fungsi n.view
28. Kembali ke langkah 8
29. Jika menu=4 bernilai benar lanjut ke langkah 30, jika salah ke langkah 33
30. Cetak “ANDA TELAH KELUAR”
31. Proses menu=7
32. Kembali ke langkah 8
33. Cetak “ INPUTAN SALAH”
34. End
- Insert
1. Start
2. Deklarasi baru = node.new (isi)
3. Panggil fungsi kosong
4. Jika kosong=true bernilai benar lanjut ke langkah 5, jika salah ke langkah 7
5. Proses head=baru, tail=baru,
6. Lanjut ke langkah 8
7. Proses tail.pnext=baru, baru.plast=tail, tail=baru
8. End
- Append
1. Start
2. Deklarasi baru=node.new (isi) , find=0
3. Panggil fungsi kosong
4. Jika kosong=true bernilai benar lanjut ke langkah 5 , jika salah ke langkah 7
5. Cetak “Data kosong”, lanjut ke langkah 14
6. Proses temp=head
7. Jika temp!=0 bernilai benar lanjut ke langkah 8, jika salah ke langkah
8. Jika nama=temp.data bernilai benar lanjut ke langkah 9, jika salah ke langkah 14
9. Jika temp.plast == kosong bernilai benar lanjut ke langkah 10, jika salah ke langkah 11
10. Proses temp.pnext=baru, baru.plast=temp, tail=baru, lanjut ke langkah 12
11. Proses save=temp.pnext, temp.next=baru, baru.plast=temp, baru.pnext=save,
save.plast=baru , lanjut ke langkah 12
12. Proses find=1, kembali ke langkah 8
13. Temp=temp.pnext, kembali ke langkah 7
14. Jika find=0 bernilai benar lanjut ke langkah 15, jika salah lanjut ke langkah 16
15. Cetak “Data tidak ada”
16. End
- Prepend
1. Start
2. Deklarasi baru=node.new (isi) , find=0
3. Panggil fungsi kosong
4. Jika kosong=true bernilai benar lanjut ke langkah 5 , jika salah ke langkah 7
5. Cetak “Data kosong”, lanjut ke langkah 14
6. Proses temp=head
7. Jika temp!=0 bernilai benar lanjut ke langkah 8, jika salah ke langkah
8. Jika nama=temp.data bernilai benar lanjut ke langkah 9, jika salah ke langkah 14
9. Jika temp.plast == kosong bernilai benar lanjut ke langkah 10, jika salah ke langkah 11
10. Proses temp.plast=baru, baru.plast=baru, head=baru, lanjut ke langkah 12
11. Proses save=temp.plast, temp.plast=baru, baru.pnext=temp, baru.plast=sae,
save.pnext=baru , lanjut ke langkah 12
12. Proses find=1, kembali ke langkah 8
13. Temp=temp.pnext, kembali ke langkah 7
14. Jika find=0 bernilai benar lanjut ke langkah 15, jika salah lanjut ke langkah 16
15. Cetak “Data tidak ada”
16. End
- View
1. Start
2. Deklarasi baru=node.new (isi)
3. Panggil fungsi kosong
4. Jika kosong=true bernilai benar lanjut ke langkah 5, jika salah ke langkah 6
5. Cetak “data kosong”, lanjut ke langkah 10
6. Proses temp=head, no=1
7. Jika temp!=0 bernilai benar lanjut ke langkah 8, jika salah ke langkah 10
8. Cetak temp.data
9. Proses No=no+1, temp=temp.pnext , kembali ke langkah 7
10. End
- Kosong
1. Start
2. Jika head=kosong and tail=kosong bernilai benar lanjut ke langkah , jika salah ke
langkah 3
3. Proses=true , lanjut ke langkah 5
4. Kosong=true, lanjut ke langkah 5
5. End
FLOWCHART
Diagram UML
Flowchart Setiap Method
1. Main Program
START
N=Nama.new
Menu=0
i=1, head=kosong,
tail=kosong
Menu<=6
“masukkan
banyak
data” y
t
“Masukkan
pilihan
i<=banyak menu”
y
y
“Maukkan
nama” Menu=1 t Menu=2 t Menu=3 t Menu=4
isi
y y y y
n.insert(isi)
Masukkan nama Masukkan nama “ANDA
sesudah nama” sebelum nama” N.view TELAH
nama nama KELUAR”
X=x+1
t
“Masukkan “Masukkan Menu=7
banyak data” banyak data”
banyak banyak
i=1 i=1
“INPUTAN
SALAH”
i<=banyak i<=banyak
t
y y
“Masukkan “Masukkan
nama baru “ nama baru “
isi isi
N.append(nama,isi) N.pepend(nama,isi)
i=i+1 i=i+1
END
2. Insert
START
kosong
Kosong=true t
tail.pnext=baru
head=baru
baru.plast=tail
tail=baru
tail=baru
START
3. Append
START
kosong
Kosong=true y
“data
Temp=head kosong”
Temp != 0
Nama=temp.data
y
t
Temp.pnext==
t
kosong
y
save=temp.pnext
temp.pnext=baru
Temp.pnext=baru baru.plast=temp
Baru.plast=temp baru.pnext=save t
Tail=baru save.plast=baru
Find=1
Temp=temp.pnext
return
y Find=0
“Data tidak
ada”
t
END
4. Prepend
START
kosong
Kosong=true y
“data
Temp=head kosong”
Temp != 0
Nama=temp.data
y
t
Temp.plast==
t
kosong
save=temp.plast
y
temp.plast=baru
baru.pnext=temp
Temp.plast=baru baru.plast=save
Baru.plast=baru save.pnext=baru t
head=baru
Find=1
Temp=temp.pnext
return
y Find=0
“Data tidak
ada”
t
END
5. View 6. Kosong
START
START
Head=kosong and
Baru = node.new (isi) y tail=kosong t
END
Kosong=true y
Temp=head “data
No = 1 kosong”
Temp != 0
Temp.data
t
No=no+1
Temp=temp.pnext
START
SOURCE CODE
class Nama
attr_accessor :head, :tail
def initialize
@head=nil
@tail=nil
end
class Node
attr_accessor :data, :pnext, :plast
def initialize(isi)
@data=isi
@pnext=nil
@plast=nil
end
end
def kosong
if @head==nil and @tail==nil
return true
else
return false
end
end
def insert(isi)
baru=Node.new(isi)
if kosong
@head=baru
@tail=baru
else
@tail.pnext=baru
baru.plast=@tail
@tail=baru
end
end
def append(nama,isi)
baru=Node.new(isi)
find=0
if kosong
puts "Data Masih Kosong!!!"
puts "Entry Gagal!!!"
else
temp=@head
while temp!=nil
if nama==temp.data
if temp.pnext==nil
temp.pnext=baru
baru.plast=temp
@tail=baru
else
save=temp.pnext
temp.pnext=baru
baru.plast=temp
baru.pnext=save
save.plast=baru
end
puts
find=1
return
end
temp=temp.pnext
find=1
return
end
temp=temp.pnext
end
if find==0
puts "Nama tidak ditemukan!!!"
puts
end
end
end
def prepend(nama,isi)
baru=Node.new(isi)
find=0
if kosong
puts "Data Masih Kosong!!!"
else
temp=@head
while temp!=nil
if nama==temp.data
if temp.plast==nil
temp.plast=baru
baru.pnext=temp
@head=baru
else
save=temp.plast
temp.plast=baru
baru.pnext=temp
baru.plast=save
save.pnext=baru
end
find=1
return
end
temp=temp.pnext
end
if find==0
puts "Nama tidak ditemukan!!!"
end
end
end
def view
if kosong
puts "Data Masih Kosong!!!"
else
temp=@head
no=1
while temp!=nil
print("Nama ke-"+no.to_s+" : "+temp.data.to_s)
no+=1
temp=temp.pnext
end
end
end
end
menu=1
n=Nama.new
puts "MASUKKAN BANYAK DATA NAMA:"
banyak=gets.to_i
for i in 1..banyak
end
menu=1
n=Nama.new
puts "MASUKKAN BANYAK DATA NAMA:"
banyak=gets.to_i
for i in 1..banyak
puts "MASUKKAN NAMA #{i} :"
isi=gets.to_s
n.insert(isi)
end
while menu<=6
puts "Menu"
puts "1. Entry Setelah Nama"
puts "2. Entry Sebelum Nama"
puts "3. View Daftar Nama"
puts "4. Exit"
print "Masukkan pilihan menu:"
menu=gets.to_i
if menu==1
print "Masukkan Nama Sesudah Nama : "
nama=gets.to_s
puts "masukkan banyak data:"
banyak=gets.to_i
for i in 1..banyak
print "Masukkan Nama baru ke #{i}: "
isi=gets.to_s
n.append(nama,isi)
end
elsif menu==2
print "Masukkan Nama Sebelum Nama : "
nama=gets.to_s
puts "masukkan banyak data:"
banyak=gets.to_i
for i in 1..banyak
print "Masukkan Nama baru ke #{i}: "
isi=gets.to_s
n.prepend(nama,isi)
end
elsif menu==3
puts "DATA NAMA:"
n.view
elsif menu==4
puts "ANDA TELAH KELUAR"
menu=7
else
puts "INPUTAN SALAH"
end
end
end
end
def delete
puts "DATA TELAH DIHAPUS"
@nama="-"
@nik="-"
@jabatan="-"
@alamat="-"
@gaji="-"
@tunjangan="-"
@total="-"
end
end
end
OUTPUT
1. Input
2. View
3. Search
4. Update
5. Delete
ANALISA MASALAH
Fungsi Search
Pada fungsi search ini, digunakan untk menampilkan data yang di cari oleh user dengan
memasukkan nama yang akan dicari. Misalkan data yang telah di inputkan bernama adi, maka,
jika ingin mencari data terebut, tinggal memasukkan nama “adi” dan akan keluar data tersebut.
Fungsi Update
Pada fungsi update ini digunakan untuk mengganti data yang telah di inputkan atau
mengupdate data yang telah di inputkan dengan cara memasukkannama data yang akan diganti.
Jadi jika kita ingin mengganti data yang telah ada, misalnya bernama adi, maka kita tinggal
memasukkan nama “adi” yang akan kita update.
Sedangkan double linked list adalah linked list yang terdapat interaksi antar nodenya di
mana setiap node dapat menunjuk node sebelum dan node setelah yang memiliki 2 elemen
pointer. Di dalam ruby kita mengenal nama node berupa head dan tail. Di dalam double linked
list terdapat 2 jenis untuk penembahan data yaitu append dan prepend. Append merupakan
penambahan data sesudah node yang di tunjuk, sedangkan prepend merupakan penambahan
sebelum node yang di tunjuk.