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;
Langganan:
Posting Komentar (Atom)
Tidak ada komentar:
Posting Komentar