Rabu, 10 Maret 2010

linked list

MENYISIPKAN SUATU NODE KE DALAM LINKED LIST

Untuk menyisipkan node dalam linked list digunakan procedure GETNODE.
Jika NEW adalah suatu variabel pointer, maka GETNODE(NEW) akan menyebabkan node yang ditunjuk oleh variabel pointer NEW disisipkan ke dalam linked list.

procedure Getnode(NEW)
if Avail = Null
then out-of-free-space


(a) else begin
Getnode := Avail;




(b) Avail := Next(Avail);


(c) Next(Getnode) : = Null;
end;




Algoritma menyisipkan sebuah Node :

(a) Getnode(NEW);

(b) Info(NEW) := Name;


(c) Q := Next(P)

(d) Next(P) := NEW



(e) Next(NEW) := Q



Logika Linked List pada Array

(a) Jika tidak menggunakan logika linked list
(pada umumnya dalam meng-input data digunalan cara sequential)

Awal Insert E Delete C Insert F
1 A 1 A 1 A 1 A
2 C 2 C 2 2
3 3 E 3 E 3 E
4 4 4 4 F

Insert G
Delete E (overflow)
1 A 1 A
2 2
3 3
4 F 4 F

(b) Jika menggunakan logika Linked List

Keadaan awal Insert E Delete C
Info Next Info Next Info Next
1 A 2 1 A 2 1 A 3
2 C 0 2 C 3 2 4
3 4 3 E 0 3 E 0
4 0 4 0 4 0


Insert F Delete E Insert G
Info Next Info Next Info Next
1 A 3 1 A 2 1 A 2
2 F 0 2 F 0 2 F 3
3 E 2 3 4 3 G 0
4 0 4 0 4

Mendefinisikan Linked List dalam Pascal

Type nodeptr = ^ nodetype;
nametype = packed array [1..10] of char;
nodetype = record
info : nametype;
next : nodeptr;
end;
Var p : nodeptr;
node : nodetype;

* Catatan :

P ^. Info : Info dari node yang ditunjuk oleh pointer P
P^. Next : Next dari node yang ditunjuk oleh pointer P
P := nil : pointer P berisi nilai Null
New(P) : fungsi Getnode dalam Pascal
dispose(P) : procedure Freenode dalam Pascal

Menghapus sebuah Node dalam Pascal

procedure removaf(p:nodeptr, var out:nametype);
var q : nodeptr;
begin
if (p^.Next = nil)
then UNDERFLOW-CONDITION
else begin
q := p^.Next;
p^.Next := q^.Next;
out := q^.Info;
dispose(q);
end;
end;

Menyisipkan sebuah Node dalam Pascal

procedure inseraf(p:nodeptr, in:nametype);
var q : nodeptr;
begin
New(q);
q^.Info := in;
q^.Next := p^.Next;
p^.Next := q;
end;
Penyisipan pada akhir dari suatu Linked List (Linked List Antrean) dalam Pascal

Procedure Inserend(first : nodeptr, in :nametype);
Var newnode, q : nodeptr;
Begin
New(newnode);
newnode^.Info := in;
newnode^.Next := nil;
q := first;
do while (q^.next <> nil)
q := q^.Next;
q^.Next := newnode;
End;

Jika sebuah Linked List digunakan untuk menggambarkan suatu antrean, dalam hal ini pointer dapat langsung menunjuk ke rear/akhir dari antrean untuk menghindari pengulangan melalui semua node untuk menemukan node terakhir.
procedure inserend(in : nametype, var rear : nodeptr);
var newnode : nodeptr;
begin
New(newnode);
newnode^.Info := in;
newnode^.Next := nil;
rear^.Next := newnode;
rear := newnode;
end;

Tidak ada komentar:

Posting Komentar