buat program dengan turbo pascal

uses crt;
type link = ^rantai;
     rantai = record
     info : char;
     next : link;
     end;

var LL : link;

procedure baru (var nodebaru : link; databaru:char);
begin

new (nodebaru);
nodebaru^.info:=databaru;
nodebaru^.next:=nil;
end;

procedure bacaisi(var LL:link);
var bantu:link;
begin

if LL=nil then
begin
writeln;
writeln('Senarai kosong');
end

else
begin
bantu:=LL;

if bantu^.next=nil then
begin
writeln;
write(bantu^.info,' ');
exit;
end

else
begin
writeln;
write(bantu^.info,' ');

repeat
bantu:=bantu^.next;
write(bantu^.info,' ');
until bantu^.next=nil;
end;
end;
end;

procedure masukdibelakang(var LL:link; var databaru:char);
var nodebaru : link;
bantu : link;
begin

baru(nodebaru, databaru);
if LL=nil then
begin
LL:=nodebaru
end

else
begin
bantu:=LL;

while bantu^.next <> nil do
bantu:=bantu^.next;

bantu^.next:=nodebaru;
end;
end;

procedure hapusdidepan(var LL:link);
var nodehapus:link;
begin

if LL=nil then
begin
writeln;
write('Senarai Kosong');
end

else
begin
nodehapus:=LL;
LL:=LL^.next;
dispose(nodehapus);
end;
end;

procedure masuknodediantara(var LL:link; setelahhuruf, databaru : char);
var nodebaru, bantu : link;
begin

if LL=nil then
writeln('Senarai masih Kosong')

else
begin
baru(nodebaru, databaru);
bantu:=LL;

repeat
if bantu^.info=setelahhuruf then
begin
nodebaru^.next:=bantu^.next;
bantu^.next:=nodebaru;
exit;
end

else
bantu:=bantu^.next;
until bantu^.next=nil;

if bantu^.info=setelahhuruf then
masukdibelakang(LL, databaru);
end;
end;

procedure hapusnodetertentu( var LL:link; datahapus:char);
var nodehapus, bantu:link;
begin

if LL=nil then
write('Senarai Sudah Kosong')
else
if LL^.info=datahapus then
hapusdidepan(LL)
else
begin
bantu:=LL;

while bantu^.next<>nil do
begin
if bantu^.next^.info=datahapus then
begin
nodehapus:=bantu^.next;
bantu^.next:=bantu^.next^.next;
dispose (nodehapus);
end
else
bantu:=bantu^.next;
end;
end;
end;

procedure hapusdibelakang(var LL:link);
var bantu : link;
var nodehapus : link;
begin

if LL=nil then
begin
writeln;
write('Senarai Sudah Kosong');
end

else if LL^.next=nil then
begin
hapusdidepan(LL);
end

else
begin
bantu:=LL;
while bantu^.next^.next<>nil do
bantu:=bantu^.next;

hapusdidepan(bantu^.next);

end;
end;

var pilih, databaru, datamasuk, setelahhuruf, datahapus : char;
begin

repeat
clrscr;
writeln('Program Single Link List');
writeln('-------');
writeln('1. Tambah Node dari Belakang');
writeln('2. baca isi Node');
writeln('3. Hapus node dari belakang');
writeln('4. Tambah node diantar');
writeln('5. Hapus data tertentu');
writeln('6. Selesai');
writeln('-------');

write('Masukkan Pilihan Anda :');
pilih:=readkey;
write(pilih);

case pilih of
'1' : repeat
    writeln;
    write('Masukkan Data :');
    databaru:=UPCASE(readkey);
    writeln(databaru);

    masukdibelakang(LL, databaru);
    until (databaru=#27);

'2' : bacaisi(LL);

'3' : begin
    hapusdibelakang(LL);
    bacaisi(LL);
    writeln('Node Sudah ihapus');
    writeln;
    writeln('Node Sekarang');
    bacaisi(LL);
    end;

'4' : begin
    writeln;
    writeln;
    write('Isi senarai saat ini adalah:');
    bacaisi(LL);
    writeln;
    write('Masukkan huruf yang disisipkan:');
    databaru:=upcase(readkey); writeln(databaru);
    write('Disisipkan setelah huruf:');
    setelahhuruf:=upcase(readkey);
    writeln(setelahhuruf);
    masuknodediantara(LL, setelahhuruf, databaru);
    bacaisi(LL);
    end;

'5' :begin
    writeln;
    writeln;
    writeln('isi senarai saat ini');
    bacaisi(LL);
    writeln;
    write('Data yang akan dihapus adalah:');
    datahapus:=upcase(readkey);
    writeln(datahapus);
    hapusnodetertentu(LL, datahapus);
    bacaisi(LL);
    end;
    end;

    readkey;
    until pilih='6';
    end.
erwinhasibuan.blogspot.com
buat program dengan turbo pascal buat program dengan turbo pascal Reviewed by Unknown on 03.41.00 Rating: 5

Tidak ada komentar:

Diberdayakan oleh Blogger.