Awal Bantu
Akhir
C. PRAKTIK
{Program tambah dan baca} program senarai_berantai;
uses crt; const
garis =
‘------------------------------------------‘; pesan = ‘Senerai berantai masih kosong’;
type simpul = data; data = record
nama, alamat : string;
berikut : simpul end;
var awal, akhir : simpul ;
pilih : char; cacah : integer;
{fungsi untuk memilih menu} function menu : char;
var p : char; begin
clrscr; gotoxy30,3; writeln‘DAFTAR MENU PILIHAN’;
gotoxy20,8; writeln‘A. MENAMBAH SIMPUL BARU DI AWAL SENARAI’;
gotoxy20,9; writeln‘B. MENAMBAH SIMPUL BARU DI AKHIR SENARAI’;
gotoxy20,10; writeln‘C. MENCETAK ISI SENARAI’; gotoxy20,11; writeln‘D. SELESAI’;
repeat gotoxy48,15; writeln‘ ’:10;
gotoxy30,20; writeln‘PILIH SALAH SATU’; A
B C
D
p:= upcase readkey; until p in [‘A’ .. ‘D’];
menu :=p end;
{fungsi alokasi simpul } function simpul_baru : simpul;
var b : simpul; begin
newb; with b do
begin write‘Nama :’; readlnnama;
write‘Alamat : ‘;readlnalamat; berikut :=nil
end; simpul_baru:=b
end;
{fungsi tambah simpul baru di awal senarai} procedure tambah_awal n:integer;
var baru : simpul; begin
if n o then begin
writeln‘menambah simpul baru di awal senarai’; writelncopygaris,1,45
end; writeln;
baru:=simpul_baru; if awal = nil then
akhir :=baru else baru.berikut := awal;
awal :=baru; end;
{fungsi tambah simpul baru di akhir senarai} procedure tambah_akhir n:integer;
var baru : simpul; begin
clrscr; if n o then
begin writeln‘Menambah simpul baru di akhir senarai’;
writelncopygaris,1,46 end;
writeln; baru:=simpul_baru;
if awal = nil then awal := baru
else akhir.berikut := baru
akhir:=baru; end;
{prosedu baca isi senarai} procedure baca_senarai;
var bantu:simpul; i:integer;
begin i:=1;
writeln‘Membaca isi senarai’; writeln‘teken enter untuk kembali ke menu’;
writelncopygaris,1,42; writeln;
if bantu = nil then writeln‘Data masih kosong’;
else bantu := awal;
while bantu nil do begin
writeln‘simpul : ‘, i:3,’ - nama :
‘,bantu.nama; writeln‘ ‘:17,’ alamat : ‘,bantu.alamat;
bantu:=bantu.berikut; inci
end; repeat until keypressed
end;
{program utama} cacah:=0;
awal:=nil; akhir:=nil;
repeat pilih:=menu;
clrscr; case pilih of
‘A’ :tambah_awal1; ‘B’ : tambah_akhir1;
‘C’ :baca_senarai; end;
if pilih in[‘A’,’B’] then inccacah until pilih = ‘D’
end.
Cobalah dengan simpul berikut: Nama
Alamat Jeny-1
Solo-1 Jeny-2
Solo-2 Jeny-3
Solo-3 Jeny-4
Solo-4 Jeny-5
Solo-5
D. TUGAS