Double linked list Circular
SISIP
DEPAN
procedure sisip_depan_double(I/O
awal,akhir:pointer input kode:integer judul:string)
{I.S. : Data yang akan disisipkan (elemen),
pointer penunjuk awal dan pointer penunjuk akhir sudah terdefinisi }
{F.S. : Menghasilkan satu simpul yang
disisipkan di depan pada double linked list}
Kamus :
dataBuku:pointer
Algoritma :
New(dataBuku)
dataBuku↑.kodeBuku ← kode
dataBuku↑.judulBuku ← judul
if (awal = nil) then
awal ← dataBuku
akhir ← dataBuku
akhir↑.next ← awal
awal↑.prev ← akhir
else
dataBuku↑.next ← awal
awal↑.prev ← dataBuku
awal ← dataBuku
akhir↑.next ← awal
awal↑.prev ← akhir
endif
endprocedure
SISIP
BELAKANG
procedure sisip_belakang_double(I/O awal,akhir
:pointer input kode:integer judul:string)
{I.S. : Data yang akan disisipkan (elemen),
pointer penunjuk awal dan pointer penunjuk akhir sudah terdefinisi }
{F.S. : Menghasilkan satu simpul yang
disisipkan di belakang pada double linked list}
Kamus :
dataBuku : pointer
Algoritma :
New(dataBuku)
dataBuku↑.kodeBuku ← kode
dataBuku↑.judulBuku ← judul
dataBuku↑.next ← awal
if (awal = nil) then
awal ← dataBuku
akhir ← dataBuku
akhir↑.next ← awal
awal↑.prev ← akhir
else
dataBuku↑.prev←akhir
akhir↑.next←dataBuku
akhir←dataBuku
akhir↑.next←awal
awal↑.prev←akhir
endif
endprocedure
SISIP
TENGAH
procedure sisip_tengah_double(I/O awal,akhir
:pointer input kode:integer judul:string menu_sisiptengah :integer)
{I.S. : Data yang akan disisipkan (elemen),
pointer penunjuk awal dan pointer penunjuk akhir sudah terdefinisi }
{F.S. : Menghasilkan satu simpul yang
disisipkan di tengah pada double linked list}
Kamus :
procedure sisip_belakang_double(I/O awal,akhir
:pointer input kode:integer judul:string)
dataBuku,bantu : pointer
datasisip: integer
ketemu:boolean
Algoritma :
if(awal=nil)then
New(dataBuku)
dataBuku↑.kodeBuku← kode
dataBuku↑.judulBuku← judul
dataBuku↑.next← awal
dataBuku↑.prev ← akhir
awal←dataBuku
akhir←dataBuku
else
{SEQUENTIAL SEARCH}
output('Disisipkan Di (Kode Buku) : ')
input(datasisip)
bantu←awal
ketemu←false
while(not ketemu) and (bantu ≠ nil ) do
if(datasisip=bantu↑.kodeBuku)then
ketemu←true
else
bantu←bantu↑.next
if(bantu↑.next = awal↑.next) then
bantu ← nil
endif
endwhile
if(ketemu) then
New(dataBuku)
dataBuku↑.kodeBuku←kode
dataBuku↑.judulBuku←judul
if(bantu=awal↑.prev) then
sisip_belakang_double(awal,akhir,kode,judul)
else
if(menu_sisiptengah=1) then
dataBuku↑.prev ← bantu
dataBuku↑.next ← bantu↑.next
bantu↑.next↑.prev ← dataBuku
bantu↑.next ←dataBuku
else
if(menu_sisiptengah=2) then
dataBuku↑.prev ← bantu↑.prev
dataBuku↑.next ← bantu
bantu↑.prev↑.next ← dataBuku
bantu↑.prev ← dataBuku
endif
endif
else
output('Data Yang Akan Anda Sisipkan Tidak
Ada')
endif
endprocedure
HAPUS
DATA
procedure hapus_double_depan(I/O awal:pointer
output: elemen:integer)
{I.S. : Data yang akan disisipkan (elemen),
pointer penunjuk awal dan pointer penunjuk akhir sudah terdefinisi }
{F.S. : Menghapus simpul depan pada double
linked list}
Kamus :
phapus:pointer
Algoritma :
if (awal = nil)then
output('Data Masih Kosong , Penghapusan Tidak
Bisa Dilakukan !!')
else
begin
phapus←awal
elemen← phapus↑.kodeBuku
if(awal=akhir)
then
awal←nil
akhir←nil
else
awal←awal↑.next
awal↑.prev ← akhir
akhir↑.next ← awal
dispose(phapus)
output('Penghapusan Berhasil')
endif
endif
endprocedure
CARI
DATA
procedure cari_kode(output: awal :pointer)
{I.S. : Data yang akan disisipkan (elemen),
pointer penunjuk awal dan pointer penunjuk akhir sudah terdefinisi }
{F.S. : Menampilkan hasil cari data pada simpul
yang ditunjuk oleh user pada double linked list}
Kamus :
y : integer
ketemu:boolean
datacari: integer
bantu : pointer
Algoritma :
output('Masukan Kode yang Akan Dicari : ')
input(datacari)
bantu←awal
ketemu←false
while(not ketemu) and (bantu ≠ awal↑.prev) do
if(datacari=bantu↑.kodeBuku)
then
ketemu←true
else
bantu←bantu↑.next
endif
endwhile
if(ketemu) then
output(bantu↑.kodeBuku)
output(bantu↑.judulBuku)
else
output('Buku dengan Kode ',datacari,' Tidak
Ditemukan!')
endif
endprocedure
TAMPIL
DATA
procedure tampil(input awal:pointer)
{I.S. : Data yang akan disisipkan (elemen),
pointer penunjuk awal dan pointer penunjuk akhir sudah terdefinisi }
{F.S. : Menampilkan semua simpul yang belum
terurut pada double linked list}
Kamus :
bantu : pointer
i,y : integer
Algoritma :
bantu ← awal
while (bantu ≠ nil ) do
output(bantu↑.kodeBuku)
output(bantu↑.judulBuku)
bantu←bantu↑.next
i←i+1
if(bantu↑.next=awal↑.next) then
bantu← nil
endif
endwhile
endprocedure
PENGHANCURAN
procedure penghancuran(I/O: awal : pointer)
{I.S. : Data yang akan disisipkan (elemen),
pointer penunjuk awal dan pointer penunjuk akhir sudah terdefinisi }
{F.S. : Menghapus semua data pada double linked
list}
Kamus :
procedure hapus_double_depan(I/O awal:pointer
output: elemen:integer)
elemen : integer
Algoritma :
repeat
hapus_double_depan(awal,elemen)
until (awal = nil)
output('Data Berhasil Dihapus.')
endprocedure
Tidak ada komentar:
Posting Komentar