ALGO PART 2

Uses WinCrt;
Type
Pointer = ^TypeData;
TypeData = Record
Nilai : integer;
Berikutnya : Pointer;
End;
Var
List : Pointer;
{====================================================================}
{====================== MASUK DATA DARI DEPAN========================}
{====================================================================}
Procedure Masuk_Depan(Var L : Pointer; X : Integer);
Var
Baru : Pointer;
Begin
New(Baru);
Baru^.Nilai := X;
Baru^.Berikutnya := Nil;
if L = Nil then L := Baru
else
Begin
Baru^.Berikutnya :=L;
L :=Baru;
End;
End;
{====================================================================}
{======================= SISIP DATA DI TENGAH =======================}
{====================================================================}
Procedure Sisip_Tengah(Var L : Pointer; X, Y : Integer);
Var
Baru,Bantu : Pointer;
Begin
Bantu := L;
While Bantu^.berikutnya Nil Do
Begin
If Bantu^.Nilai = X Then
Begin
New(Baru);
Baru^.Nilai := Y;
Baru^.Berikutnya := Bantu^.Berikutnya;
Bantu^.Berikutnya := Baru;
End;
Bantu := Bantu^.Berikutnya;
End;
End;
{====================================================================}
{===================== MASUK DATA DARI BELAKANG =====================}
{====================================================================}
Procedure Masuk_Belakang(Var L : Pointer; X : Integer);
43
Var
Baru,Bantu : Pointer;
Begin
New(Baru);
Baru^.Nilai := X;
Baru^.Berikutnya := Nil;
Bantu := L;
While Bantu^.Berikutnya Nil Do
Bantu := Bantu^.Berikutnya;
Bantu^.Berikutnya := Baru;
End;
{====================================================================}
{========================= HAPUS DATA DARI DEPAN=====================}
{====================================================================}
Procedure Hapus_Depan(Var L : Pointer);
Var
Baru : Pointer;
Begin
Baru := L;
if L = Nil then Writeln(‘List Kosong…’)
else
Begin
L := L^.Berikutnya;
dispose(Baru);
End;
End;
{====================================================================}
{===================== HAPUS DATA DARI TENGAH =======================}
{====================================================================}
Procedure Hapus_Tengah(Var L : Pointer; X : Integer);
Var
Bantu,Hapus : Pointer;
Begin
Bantu := L;
if L = Nil then Writeln(‘List Kosong…’)
else
Begin
Bantu := L;
New(Hapus);
While Bantu^.Berikutnya nil Do
Begin
if Bantu^.Berikutnya^.nilai = X then
begin
Hapus:=Bantu^.Berikutnya;
Bantu^.Berikutnya:=Hapus^.Berikutnya;
dispose(Hapus);
End
else
Bantu:=Bantu^.Berikutnya;
End;
End;
End;
44
{====================================================================}
{====================== HAPUS DATA DARI BELAKANG ====================}
{====================================================================}
Procedure Hapus_Belakang(Var L : Pointer);
Var
Baru,bantu : Pointer;
Begin
Bantu := L;
if Bantu = Nil then Writeln(‘List Kosong…’)
else
Begin
While Bantu^.Berikutnya^.Berikutnya nil do
Bantu := Bantu^.berikutnya;
New(Baru);
Baru := Bantu^.Berikutnya;
Bantu^.Berikutnya:=nil;
dispose(Baru);
End;
End;
{====================================================================}
{======================= PROCEDURE CETAK DATA =======================}
{====================================================================}
Procedure Cetak(L : Pointer);
Var
Bantu : Pointer;
Begin
Bantu := L;
While Bantu Nil Do
Begin
Write(Bantu^.Nilai:3);
Bantu:=Bantu^.Berikutnya;
End;
End;
{====================================================================}
{============================ PROGRAM UTAMA =========================}
{====================================================================}
Var
Bil,Bil1 : integer;
JB : Char;
Begin
New(List);
List:=nil;
Jb := ‘Y’;
Writeln(‘MASUK DEPAN’);
While UpCase(Jb)=’Y’ Do
Begin
Write(‘Masukkan Bilangan : ‘); Readln(Bil);
Masuk_Depan(List,Bil);
Write(‘Lagi[Y/T] ‘);Readln(Jb);
End;
Cetak(List);
Writeln;
45
Jb := ‘Y’;
Writeln(‘MASUK BELAKANG’);
While UpCase(Jb)=’Y’ Do
Begin
Write(‘Masukkan Bilangan : ‘); Readln(Bil);
Masuk_Belakang(List,Bil);
Write(‘Lagi[Y/T] ‘);Readln(Jb);
End;
Cetak(List);
writeln;
Jb := ‘Y’;
Writeln(‘MASUK DEPAN’);
While UpCase(Jb)=’Y’ Do
Begin
Write(‘Masukkan Bilangan : ‘); Readln(Bil);
Masuk_Depan(List,Bil);
Write(‘Lagi[Y/T] ‘);Readln(Jb);
End;
Cetak(List);
Writeln;
Writeln(‘SISIP TENGAH’);
Write(‘Masukkan Bilangan Yg akan disisip : ‘);
Readln(Bil1);
Write(‘Disisip Setelah Bilangan : ‘);
Readln(Bil);
Sisip_Tengah(List,Bil,Bil1);
Cetak(List);
Writeln;
writeln(‘HAPUS DEPAN ‘);
Hapus_Depan(List);
Cetak(List);
Writeln;
writeln(‘HAPUS BELAKANG’);
Hapus_Belakang(List);
Cetak(List);
Writeln;
Writeln(‘HAPUS TENGAH’);
Write(‘Masukkan Bilangan Yg akan dihapus : ‘);
Readln(Bil);
Hapus_Tengah(List,Bil);
Cetak(List);
Writeln;
End.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: