Docstoc

Single Linked List (PowerPoint)

Document Sample
Single Linked List (PowerPoint) Powered By Docstoc
					Pembahasan teori :
1. Definisi Single Linked List
2. Operasi Single Linked List
3. Operasi Penambahan
4. Soal Latihan



                         Oleh Joko Bintarto
                                  May 2012
 Single : artinya pointer-nya hanya satu buah dan
  satu arah, yaitu menunjuk ke node sesudahnya.
 Node terakhir akan menunjuk ke NULL yang akan
  digunakan sebagai kondisi berhenti pada saat
  pembacaan isi linked list.
 ilustrasi single linked list yang memiliki 4 node :




                                                        2
 Ilustrasi   single linked list pada memory :



c                a         e        d         b



        Kepala
   Karena node tidak ditunjuk oleh node manapun
    maka node ini adalah node yang paling depan
    (node kepala).
 Ilustrasi   single linked list pada memory :




    c            a          e        d        b


                     Ekor
   Node e tidak menunjuk ke node manapun sehingga
    pointer dari node e adalah NULL. Dapat
    disimpulkan bahwa node ini adalah node yang
    paling belakang (node ekor).
~ Single Linked List yang pointer next-nya menunjuk ke
dirinya sendiri, jika terdiri dari beberapa node maka
pointer terakhirnya akan menunjuk ke pointer
terdepannya.




    Modul Kuliah Struktur Data oleh Joko BIntarto S.Kom
1.   Inisialisasi
2.   isEmpty
3.   size
4.   Penambahan
5.   Penghapusan
6.   Penyisipan
7.   Pencarian
8.   Pengaksesan
 Proses ini digunakan untuk mendeklarasi
  sekaligus memberikan nilai awal (inisialisasi)
  pada pointer head dan tail.
 Nilai awal kedua pointer tersebut adalah NULL.
  Yang menandakan bahwa linked list dalam
  kondisi kosong (belum ada node yang terbentuk).
    Bentuk umum :

    Node head,tail ;

              void inisialisasi()
              {
                 head=tail=null;
              }


    Modul Kuliah Struktur Data oleh Joko BIntarto S.Kom
 Digunakan  untuk mengetahui linked dalam
  kondisi kosong.
 Kondisi kosong : jika size = 0 atau jika
  head=tail=null.

   Bentuk Umum :

   boolean isEmpty()                                { return size==0; }




  Modul Kuliah Struktur Data oleh Joko BIntarto S.Kom
 Digunakan  untuk mengetahui banyak node
  pada linked list.
 Size akan bertambah 1 setiap ada node baru
  yang ditambahkan pada linked list.
 Size akan berkurang 1 setiap ada
  penghapusan node.

  Bentuk Umum

   int size()                 { return size;            }



  Modul Kuliah Struktur Data oleh Joko BIntarto S.Kom
    Dibedakan menjadi :
1.   Penambahan dari depan
2.   Penambahan dari belakang
3.   Penambahan setelah node tertentu
4.   Penambahan sebelum node tertentu




     Modul Kuliah Struktur Data oleh Joko BIntarto S.Kom
   Jika kondisi awal node kosong maka head dan tail akan sama-
    sama menunjuk ke node input.
   Jika pada linked list telah ada node, maka head akan
    menunjuk ke node input (hanya head yang bergerak).


void addFirst(Node input){
    if (isEmpty()){
        head=input;
        tail=input;
    }
    else
    {
    input.pointer = head;
    head = input;
    } size++;
  }


       Modul Kuliah Struktur Data oleh Joko BIntarto S.Kom
   Jika kondisi awal node kosong maka head dan tail akan
    sama-sama menunjuk ke node input.
   Jika pada linked list telah ada node, maka tail akan
    menunjuk ke node input (hanya tail yang bergerak).

void addLast(Node input){
    if (isEmpty()){
        head = input;
        tail = input;
    }
    else
    {
    tail.pointer = input;
    tail = input;
    } size++;
  }


      Modul Kuliah Struktur Data oleh Joko BIntarto S.Kom
 Dilakukanpencarian node yang memiliki
 data yang sama dengan key.
 void insertAfter(Object key,Node input){
     Node temp = head;
     do{
        if(temp.data==key){
            input.pointer = temp.pointer;
            temp.pointer = input;
           size++;
            System.out.println("Insert data is succeed.");
            break;
        }
        temp = temp.pointer;
     }while (temp!=null);
   }


        Modul Kuliah Struktur Data oleh Joko BIntarto S.Kom
        a                          b                         c       d

                    temp

 Menyisipkan X pada lokasi setelah temp.

    a                      x                             b       c       d


 temp                      x



   Modul Kuliah Struktur Data oleh Joko BIntarto S.Kom
void insertBefore(Object key,Node input){
    Node temp = head;
    while (temp != null){
       if ((temp.data == key)&&(temp == head))
       {
           this.addFirst(input);
           System.out.println("Insert data is succeed.");
           break;
       }
       else if (temp.pointer.data == key)
           { input.pointer = temp.pointer;
           temp.pointer = input;
           System.out.println("Insert data is succeed.");
           break;
       }
       temp = temp.pointer;
    }
  }

   Modul Kuliah Struktur Data oleh Joko BIntarto S.Kom
 Digunakan untuk mencetak data seluruh node
 mulai dari yang paling depan sampai ketemu
 NULL.

 public void print()
    {
      Node p = head.pointer;
       while (p != null) {
          System.out.println (p.data);
          p = p.pointer;
       }
   }




   Modul Kuliah Struktur Data oleh Joko BIntarto S.Kom
Buat Algoritma Pemrograman pada program utama yang hasil
ouputnya sebagai berikut :




    Modul Kuliah Struktur Data oleh Joko BIntarto S.Kom
1. Membuat Class Node yang terdiri dari 3 kontruktor
2. Membuat Class Tambahdepan yang didalam ada 5 Fungsi Object yaitu :
    - Fungsi Inisialisasi
    - Fungsi IsEmpty
    - Fungsi Size
    - Fungsi AddFirst
    - Fungsi Print
3. Membuat Program Utama yang melakukan perulangan sebanyak 4 kali
   didalam fungsi AddFirst
                                                         Constructor 2
   public class Node {
                                           Constructor 1     null
   Object data;
     Node pointer;                             null
     Node() { }                                            element
     Node(Object data)
                                               null
     {     this.data = data; }                           Constructor 3
     Node(Object data, Node pointer)
                                                             next
     { this.data = data;
        this.pointer = pointer; } }
                                                           element

      Modul Kuliah Struktur Data oleh Joko BIntarto S.Kom
public class tdepan {                                        public class latihan2 {
   int size = 0;Node head;Node tail;                         public static void main
void inisialisasi() {     head=null; }                       (String[] args) {
boolean isEmpty() {         return                           tdepan t = new tdepan();
size==0; }                                                   for (int i = 0; i < 4 ; i++) {
int size() { return size; }                                             t.AddFirst(i); }
public void addLast(Node input){                             t.Print();
if (isEmpty()){ head = input;tail = input;                    } }
 } else {tail.pointer = input;tail = input;
 } n.size++; }                                               Single List
public void print() { Node p = n.head ;
while (p != null) {
println ("head "+p.data + "\ntail "+
p.pointer); p = p.pointer; } } }

Buktikan !!
Apakah AddFirst merupakan implementasi dari Circuit Single List ??
Berikan Contoh dan Penggambarannya ??
Di kumpul lewat Email : jbintarto@gmail.com

       Modul Kuliah Struktur Data oleh Joko BIntarto S.Kom
Pembahasan Praktikum :
1. Pembuatan class operasi tambah
2. Pembuatan Program Utama untuk
   penambahan belakang
3. Tugas buat Program Utama untuk
   Penambahan depan berbentuk circuit
   Single List

                         Oleh Joko Bintarto
                                  May 2012
public class operasitambah{
int size = 0; Node head; Node tail;

void inisialisasi()    {   head=null;   }

boolean isEmpty()      {   return size==0; }

int size() {   return size; }

public void addFirst(Node input) {
if (isEmpty()){ head=input; tail=input;  }
 else { input.pointer = head; head = input;       } size++;
}

public void addLast(Node input) {
if (isEmpty()){ head = input; tail = input;     }
else { tail.pointer = input;       tail = input; } size++;
    }
public void insertAfter(Object key,Node input){
Node temp = tail ;
Do{ if (temp.data==key) { input.pointer = temp.pointer;
temp.pointer = input; size++; System.out.println("Insert data is succeed.");
break; } temp = temp.pointer; } while (temp!=null);
}

void insertBefore(Object key,Node input){
 Node temp = head;
 while (temp != null){ if ((temp.data == key)&&(temp == head))
{ this.addFirst(input); System.out.println("Insert data is succeed.");
Break; } else if (temp.pointer.data == key) { input.pointer = temp.pointer;
temp.pointer = input; System.out.println("Insert data is succeed.");
 break; } temp = temp.pointer; }
 }

public void print()
{ Node p = head ;
while (p != null) { System.out.println ("head "+p.data + "\ntail "+ p.pointer);
 p = p.pointer; } }
}
public class latihan2 {
public static void main(String[] args) {
  operasitambah t = new operasitambah ();
          for (int i=0;i<4;i++)
          { t.addLast(new Node(i)); }
     t.print();
  }
}

				
DOCUMENT INFO
Shared By:
Categories:
Tags: Single, Linked, List
Stats:
views:89
posted:5/16/2012
language:
pages:24