Académique Documents
Professionnel Documents
Culture Documents
Mata Kuliah :
ITF202, Algoritma Struktur Data
Dosen : Winarno Sugeng
Cek List Kosong/Isi
P P P P
Nil
Head (Pointer Awal) Tail (Pointer Akhir)
HEAD = NIL
Cek List Kosong/Isi (lanjutan)
P P1 P2 Pn
1. Belakang
2. Depan
3. Tengah ( harus ada penentuan dengan
Pencarian )
Ilustrasi untuk Tambah Data
Awal
Belakang Akhir Baru
A B C D E
Nil
(a)
Awal Akhir Baru
A B C D E
Nil
(b)
Awal Akhir Baru
A B C D E
Nil
(c)
Procedure Tambah_Belakang(VAR Awal: simpul);
var
Akhir,
Baru : simpul;
Jawaban : Char;
begin
ClrScr;
Repeat
NEW(Baru); { (a) }
Write('Karakter : '); ReadLn(Baru^.Info);
if Awal = nil then { Linked List masih Kosong }
Awal := Baru
else
Akhir^.Berikut := Baru; { ( b ) }
Akhir := Baru; { ( c ) }
Akhir^.Berikut := nil;
Write('Masukkan data lagi (Y/T)? ');
Repeat
Jawaban := UpCase(ReadKey)
Until Jawaban IN ['Y','y','T','t'];
WriteLn(Jawaban)
Until UpCase(Jawaban) ='T'
end;
Ilustrasi untuk Tambah Data Depan
Baru Awal Akhir
A B C D E
Nil
(a)
Baru Awal Akhir
A B C D E
Nil
(b)
Baru Awal Akhir
A B C D E
Nil
(c)
Procedure Tambah_Depan(VAR Awal: simpul);
var
Akhir,
Baru : simpul;
Jawaban : Char;
begin
ClrScr;
Repeat
NEW(Baru); { (a) }
Write('Karakter : '); ReadLn(Baru^.Info);
if Awal = nil then { Linked List masih Kosong }
Akhir := Baru
else
Baru^.Berikut := Awal; { ( b ) }
Awal := Baru; { (c) }
Write('Masukkan data lagi (Y/T)? ');
Repeat
Jawaban := UpCase(ReadKey)
Until Jawaban IN ['Y','y','T','t'];
WriteLn(Jawaban)
Until UpCase(Jawaban) ='T'
end;
Menghapus Data List
1. Depan
2. Belakang
3. Tengah ( harus ada penentuan dengan
Pencarian )
Ilustrasi Hapus Depan : ( hapus B )
Awal
A B C D E
Awal (a)
A B C D E
A B C D E
(c)
Procedure Hapus_Depan(VAR Awal: Simpul);
var
Bantu : Simpul;
begin
Bantu := Awal;
If Not (Kosong(Bantu)=True) then
begin
Awal:=Awal^.Berikut; { ( b ) }
Bantu^.Berikut:=nil; { ( c ) }
Dispose(Bantu);
end;
end;
Ilustrasi Hapus Belakang : ( hapus D )
Awal
A B C D E
A B C D E
A B C D E
Nil
Awal penentu C
A B D E
FlowChart Hapus Tengah
P1<- Head
P2 <- P1^.next
Ya Tidak
P1^.data=X
HAPUS Ya Tidak
DEPAN P2=NIL
Ya Tidak
P2^.data=X
SELESAI
1. Maju
2. Mundur
Awal Bantu
A B C D E
Procedure Baca_Maju(Awal: Simpul);
var
Bantu : Simpul;
begin
Bantu := Awal;
If Not (Kosong(Bantu)=True) then
begin
Repeat
begin
Write(Bantu^.Info);
Bantu := Bantu^.Berikut
end;
Until Bantu = nil;
end
end;
Tugas