MATERI LINK LIS PADA PASCAL


BAB II
PEMBAHASAN


A. PENGERTIAN LINK LIS



        Linked list (one way list) adalah suatu kumpulan elemen data (yang disebut sebagai node) dimana urutannya ditentukan oleh suatu pointer      

 DEFINISI

Setiap elemen (node) dari suatu linked list terdiri atas 2 bagian yaitu :
  1. Info, berisi informasi tentang elemen data yang bersangkutan
  2. Next (linked field / next pointer field), berisi alamat dari elemen (node) selanjutnya yang dituju
B. BENTUK NODE SINGLE LINKED LIST NON CIRCULAR
           Pengertian : menempati alamat memori tertentu
  • Single : artinya field pointernya hanya satu buah saja dan satu arah serta pada akhir node, pointernya menunjuk NULL
  • Linked list : artinya node – node tersebut saling terhubung satu sama lain
  • Setiap node pada linked list mempunyai field yang berisi pointer ke node berikutnya, dan juga memiliki field yang berisi data
  • Node terakhir akan menunjuk ke null, yang akan digunakan sebagai kondisi berhenti pada saat pembacaan isi linked list

           Berikut ini sebuah contoh linked list yang terdiri atas 4 node

1

  • Pada node ke 4 field nextnya berisi null artinya node ke 4 tersebut adalah node terakhir
  • Node – node dalam linked list tidak harus selalu di gambarkan parallel seperti pada gambar diatas. Linked list pada contoh diatas dapat pula digambarkan seperti berikut
2
                   
    Ada 2 hal yang menjadi kerugian dengan representasi suatu data dengan linked lis  yaitu:

          1. Diperlukan ruang tambahan untuk menyatakan / tempat field pointer.
         2. Diperlukan waktu yang lebih banyak untuk mencari suatu node ke dalam linked list.

              Sedangkan keuntungannya adalah

  • Jenis data yang berbeda dapat di link
  • Operasi remove / insert hanya dilakukan dengan mengubah pointernya saja.

C. OPERASI DASAR PADA LINKED LIST
                 
    • Jika P adalah suatu variabel pointer, maka nilainya adalah alamat / lokasi dari variabel lain yang dituju
    • Operasi yang didefinisikan pada suatu variabel pointer adalah:
    1. Test apakah sama dengan null
    2. Test untuk kesamaan dengan variabel pointer lain
    3. Menetapkan sama dengan null
    4. Menetapkan menuju ke node lain
    • Notasi yang didefinisikan sehubungan dengan operasi diatas adalah:
    1. Node (P) artinya node yang ditunjuk oleh pointer P
    2. INFO (P) artinya nilai info dari node yang ditunjuk pointer P
    3. NEXT (P) artinya hubungan (link) selanjutnya dari node yang ditunjuk oleh pointer P
             Sebagai contoh, perhatikan linked list dibawah ini

3

    • NODE (P) : node yang ditunjuk oleh P yaitu node pertama
    • INFO (P) : A
    • NEXT (P) : node ke 2
    • INFO(NEXT(NEXT(P))) = C

D. MENGHAPUS SUATU NODE DARI LINKED LIST (REMOVE)


  • Untuk menghapus node dalam linked list digunakan procedure FREENODE
  • Jika Q adalah suatu variabel pointer, maka FREENODE (Q) akan menyebabkan node yang ditunjuk oleh variabel pointer Q dihapus dari linked list
  • Perhatikan linked list berikut

  Langkah 1
  Q := NEXT(P)
4
   Langkah 2
   NEXT(P) := NEXT (Q)
5


    Langkah 3
    FREENODE(Q)
    Procedure freenode (Q)
    NEXT (Q) := avail

6

        • INFO (Q) := NULL
        • Avail := Q
7

E. MENYISIPKAN SUATU NODE KEDALAM LINKED LIST

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

    PROCEDURE GETNODE (NEW)
   If Avail = Null
   Then out-of-free-space
  • Else begin
       Getnode := avail;
8

        • Avail := Next(Avail);
9
        • Next(Getnode) := Null;
        • End;
10

        • ALGORITMA MENYISIPKAN SEBUAH NODE
        • Getnode(NEW);
        • Info(NEW) := Name;

11
          • Q := Next(P)
          • Next(P) := NEW

12
          • Next(NEW) := Q

13


F. LOGIKA LINKED LIST PADA ARRAY
              Ada beberapa aturan yang dapat didefinisikan pada operasi didalam linked list yaitu. Jika tidak menggunakan logika linked list (pada umumnya dalam meng-input data digunakan cara sequential)
14

  • Jika menggunakan logika linked list
15



G. 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;
          Nodeptr : 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

H. 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;

I. 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;

J. INSERT-END
Penyisipan pada akhir dari suatu linked list (linked list antrean) dalam Pascal
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 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;

Komentar

Postingan populer dari blog ini

MATERI POINTER PADA PASCAL

PERULANGAN FOR, WHILE, DAN DO WHILE C++

MACAM-MACAM OPERATOR C++