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 |
|
|
|
|
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 |
|
|