PRAKTIK struktur data Pascal

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