seni seviyorum

Senin, 01 Juni 2009
FIFO
FIFO (First In First Out)

FIFO adalah suatu metoda pembuatan Linked List dimana data yang masuk paling awal adalah data yang keluar paling awal juga. Hal ini dapat dianalogikan (dalam kehidupan sehari-hari) misalkan saat sekelompok orang yang datang (ENQUEUE) mengantri hendak membeli tiket di loket.
Jika Linked List dibuat dengan metode FIFO, maka terjadi penambahan/Insert simpul di depan.

PROCEDURE INSERT

Procedure INSERT(elemen:TipeData);
Var Now:Point;
Begin
New(Now);
If head = nil then
Head:=now
else
Tail^.next:=now;
Tail:=Now;
Tail^.next:=nil;
Now^.isi:=elemen;
End;



Penggalan procedure INSERT untuk FIFO

Head:=Nil;
{head mula-mula selalu diidentifikasikan sebagai nil}

Procedure dan Function Linked List Lainnya
Selain procedure insert di atas, pada linked list juga terdapat procedure serta function lainnya.
Di bawah ini diberikan procedure-procedure serta function umum dalam aplikasi Linked List.

 Create : Membuat sebuah linked list yang baru dan masih kososng. (ket: procedure ini wajib dilakukan sebelum menggunakan linked list)

Procedure Create;
Begin
Head:=nil;
Tail:=nil;
End;


 Empty : Function untuk menentukan apakah linked list kosong atau tidak.

Function Empty : Boolean;
Begin
If head = nil then
Empty:= true
else
empty:= false;
end;


 Find First : Mencari elemen pertama dari linked list

Procedure Find_First;
Begin
Now:= head;
End;


 Find Next : Mencari elemen sesudah elemen yang ditunjuk now.
Procedure Find_Next;
Begin
If Now^.next <> nil then
Now:= Now^.next;
End;


 Retrieve : Mengambil elemen yang ditunjuk oleh now. Elemen tersebut lalu ditampung pada suatu variabel (di bawah dicontohkan variabel r).
Procedure Retrieve(var r: TipeData );
Begin
R:= Now^.isi;
End;

 Update : Mengubah elemen yang ditunjuk oleh now dengan isi dari suatu variabel (di bawah dicontohkan variabel u).
Procedure Update(u: TipeData );
Begin
Now^.isi:=u;
End;

 Delete Now : Menghapus elemen yang ditunjuk oleh now. Jika yang dihapus adalah elemen pertama dari linked list(head), maka head akan berpindah ke elemen berikut.
Procedure DeleteNow;
Var x : point;
Begin
If now<>head then
Begin
x:=head;
while x^.next<>now do
x:=x^.next;
x^.next:=now^.next;
end
else head:= head^.next;
dispose(Now);
Now:= head;
End;

 Delete Head : Menghapus elemen yang ditunjuk head. Head berpindah ke elemen sesudahnya.
Procedure DeleteHead;
Begin
If head<>nil then
Begin
Now:=head;
Head:=Head^.next;
Dispose(Now);
Now:=Head;
End;
End;


 Clear : Untuk menghapus linked list yang sudah ada.wajib dilakukan bila ingin mengakhiri program yang menggunakan linked list. Jika tidak data-data yang dialokasikan ke memori pada program sebelumnya akan tetap tertinggal di dalam memori.
Procedure Clear;
Begin
While head <> nil do
Begin
Now:=head;
Head:=head^.next;
Dispose(Now);
End;
End;

Latihan Soal beserta jawaban (Listing Program) dan penjelasan
Buatlah sebuah program untuk mendeteksi password/ kata sandi. Gunakan metode single linked list. Jika passwordnya benar, program akan selesai, jika salah maka user akan diminta memasukkan password kembali. (passw.pas)


Jawaban :
Uses crt;
Type
Point = ^Rec;
Rec = record
Isi : char;
Next : point;
End;
Const
Password = ‘pascal’; {password yang harus dimasukkan}
Var
i : byte;
Tekan : char;
Passwd : Boolean;
Head, Tail, Now : Point;


Procedure Create;
Begin
Head:=nil;
Tail:=nil;
End;
Procedure Push(isi:char);
Var Now:point;
Begin
New(now); {membuat simpul baru}
If Head=Nil then {mendeteksi simpul awal}
Begin
Head:=Now;
Tail:=Head;
end else
begin {menyambung simpul yang baru pada simpul yang sudah ada}
Tail^.next:=Now;
Tail:=Tail^.Next;
end;
Now^.isi:=isi; {mengisi simpul yang baru}
Now^.next:=Nil;
end;
Function Check:Boolean; {function untuk mencheck input}
Var Temp : string[15];
Begin
Temp:=’ ‘; Now:=Head;
While Now <> nil do
Begin
Temp:=temp + Now^.isi;
Now:=Now^.next;
End;
If temp <> Password then check:=False;
End;
Procedure BuatBingkai(x1,y1,x2,y2:byte); {tampilan aplikasi}
Var i : byte;
Begin
GotoXY (x1,y1); write(‘ ’); GotoXY (x2,y1); write (‘ ‘);
GotoXY (x1,y2); write(‘ ’); GotoXY (x2,y2); write (‘ ’);
For i := x1+1 to x2-1 do
Begin
GotoXY (i,y1); write (‘-‘);
GotoXY (i,y2); write (‘-’);
End;
For i := y1+1 to y2-1 do
Begin
GotoXY(x1, i); write(‘ ‘);
GotoXY(x2, i); write (‘ ‘);
End;
End;

Procedure Pop; {procedure penghapus simpul}
Begin
Now:=head;
head:=head^.next;
While Now <> nil do
Begin
Dispose(Now);
Now:=head;
Head:=head^.next;
End;
End;
Begin {program utama}
Repeat
Create; I:=0;
Repeat
Tekan:=ReadKey;
Write(Tekan);
If Tekan <>#13 then Push(Tekan); inc(i);
Until (Tekan= #13) or (I=10); {enter ditekan atau panjang = 10}
Passwd:=check; Pop;
Until Passwd;
End.
Diposkan oleh asy syaghaf di 21:30 0 komentar
posted by asy syaghaf @ 6/01/2009 10:03:00 PM  
0 Comments:
Posting Komentar
<< Home
 
About Me

Name: asy syaghaf
Home: Pekanbaru, Riau
About Me: saya hanya seorang gadis biasa yang tengah berjuang menelusuri jati diri.
See my complete profile
Previous Post
Archives
Shoutbox

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Duis ligula lorem, consequat eget, tristique nec, auctor quis, purus. Vivamus ut sem. Fusce aliquam nunc vitae purus.

Links
  • link 1
  • link 2
  • link 3
  • link 4
Powered by

Free Blogger Templates

BLOGGER