Ari Tri Hernawan10109772
IF17K
1. Sisip Depan
Procedure SisipDepanDouble(Input elemen:tipedata, I/O awal,akhir: nama_pointer){I.S. : data yang akan disisipkan (elemen), pointer penunjuk awal
dan pointer penunjuk akhir sudah terdifinisi}{F.S. : menghasilkan satu simpul yang disisipkan di depan pada
double linked list}
Kamus :Baru : nama_pointer
Algoritma:alloc(baru)baru↑.info elemenbaru↑.prev nilbaru↑.next nilif (awal = nil)
thenakhir baru
elsebaru↑.next awalawal↑.prev baru
endifawal baru
endprocedure
2. Sisip Belakang
Procedure SisipBelakangDouble(Input elemen:tipedata, I/O awal, akhir: nama_pointer){I.S. : data yang disisipkan(elemen), pointer penuntuk awal dan
pointer penunjuk akhir sudah terdefinisi}{F.S. : menghasilkan satu simpul yang disisipkan dibelakang pada
double linked list}
Kamus: Baru : nama_pointer
Algoritma:Alloc(baru)baru↑.prev nilbaru↑.next nilbaru↑.info elemenif (awal = nil)
thenawal baruakhir baru
Ari Tri Hernawan10109772
IF17K
elsebaru↑.prev akhirakhir↑.next baru
endifakhir baru
endprocedure
3. Sisip Tengah
Procedure SisipTengahDouble(Input elemen:tipedata, I/O awal, akhir : nama_pointer){I.S. : data yang akan disisipkan(elemen), pointer penunjuk awal dan
pointer penunjuk akhir sudah terdifinisi}{F.S. : menghasilkan satu simpul yang disisipkan di tengah pada
double linked list}
Kamus:Baru,bantu: nama_pointerpos: tipedata
Algoritma:If ((awal = nil) or (posisi <= 1))
thenSisipDepanDouble (elemen,awal,akhir)
Elsebantu awalPos 1While ((pos<posisi) and (bantu ≠ nil)) do
Bantu bantu↑.nextPos pos + 1
EndwhileIf (bantu = nil)
thenSisipBelakangDouble (elemen,awal,akhir)
ElseAlloc(baru)baru↑.info elemenbaru↑.next bantubaru↑.prev bantu↑.prevbantu↑.prev↑.next barubantu↑.prev baru
endifendif
endprocedure
Ari Tri Hernawan10109772
IF17K
4. Hapus Depan
Procedure HapusDepanDouble(Output elemen:tipedata, I/O awal, akhir : nama_pointer){I.S. : pointer penunjuk awal dan pointer penunjuk akhir sudah
terdefinisi}{F.S. : menghasilkan double linked list yang sudah dihapus satu
simpul di depan}
Kamus:Phapus : nama_pointer
Algoritma:If (awal = nil)
thenOutput(‘Data kosong, tidak bisa dihapus’)
elsePhapus awalElemen phapus↑.infoIf (awal = akhir)
thenAwal nilAkhir nil
ElseAwal awal↑.nextawal↑.prev nil
endifDealloc(phapus)
endifendprocedure
5. Hapus Belakang
Procedure HapusBelakangDouble(Output elemen:tipedata, I/O awal, akhir : nama_pointer){I.S. : pointer penunjuk awal dan pointer penunjuk akhir sudah
terdefinisi}{F.S. : menghasilkan double linked list yang sudah dihapus satu
simpul di belakang}
Kamus:Phapus: nama_pointer
Algoritma:If (awal = nil)
Ari Tri Hernawan10109772
IF17K
ThenOutput(‘Data kosong, tidak bisa dihapus’)
ElsePhapus akhirElemen phapus↑.infoIf (awal=akhir)
thenAwal nilAkhir nil
ElseAkhir akhir↑.prevakhir↑.next nil
endifdealloc(phapus)
endifendprocedure
6. Hapus Tengah
Procedure HapusTengahDouble(Output elemen:tipedata, I/O awal, akhir : nama_pointer){I.S. : pointer penunjuk awal dan pointer penunjuk akhir sudah
terdefinisi}{F.S. : menghasilkan double linked list yang sudah dihapus satu
simpul di tengah}
Kamus :Phapus, bantu : nama_pointerI : tipedata
Algoritma:If ((awal = nil) or (posisi < 1))
ThenOutput(‘Data kosong atau posisi kurang dari 1, tidak bisa
dihapus’)Else
If (posisi = 1)Then
HapusDepanDouble(elemen,awal,akhir)Else
Bantu awalI 1While ((I < posisi) and (bantu ≠ nil)) do
Bantu bantu↑.nextI I + 1
EndwhileIf (bantu = nil)
Then
Ari Tri Hernawan10109772
IF17K
Output(‘Posisi diluar jangkauan’)Else
If (bantu = akhir)Then
HapusBelakangDouble(elemen,awal,akhir)Else
Bantu phapusphapus↑.prev↑.next bantu↑.prevphapus↑.next↑.prev bantu↑.nextdealloc(phapus)
endifendif
endifendif
endprocedure