Listing Program
Uses Crt;
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
clrscr;
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);
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;
{===================================================================}
{====================
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;
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.
Output Program
Listing
Program
#include
"stdio.h"
#include
"conio.h"
void
main()
{
int
*point;
int
a=7, b=15;
printf("
Nilai a : %d \n", a);
printf("
Alamat a : %p \n\n", &a);
point=&a;
printf("
Nilai point = %p \n", point);
printf("
Alamat point = %p \n", &point);
printf("
nilai rujukan point = %d \n\n", *point);
*point=10;
// nilai a diganti dengan nilai pointer
printf("
Nilai point = %p \n", point);
printf("
Alamat point = %p \n", &point);
printf("
nilai rujukan point = %d \n\n", *point);
printf("
Nilai a : %d \n", a);
printf("
Alamat a : %p \n\n", &a);
printf("
Nilai B : %d \n", b);
printf("
Alamat B : %p \n\n", &b);
point=&b; // rujukan pointer diganti rujukan nilai b
printf("
Nilai point = %p \n", point);
printf("
Alamat point = %p \n", &point);
printf("
nilai rujukan point = %d \n\n", *point);
getch();
}
Output Program