Diberdayakan oleh Blogger.
RSS

pointer


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
 

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

0 komentar:

Posting Komentar