TUGAS LATIHAN PERTEMUAN 09

PERTEMUAN 09

MATA KULIAH  : STRUKTUR DATA

LINEAR SINGLY LINKED LIST

Link List: sejumlah obyek yang dilink/dihubungkan satu dengan lainnya.
Obyek : gabungan bebrapaelemen data yg dijadikan satu kelompok/struktur/record

Untuk menghubungkan antar obyek perlu variabel tipe pointer yg merupakan salah satu variabel dalam struktur obyek.
Linear Singly Linked List : Link list lurus dengan pointer tunggal

I. Ilustrasi
a. Ada 4 simpul : 1, 2, 3, 4
b. Setiap simpul terdiri dari 2 elemen/field, yaitu :
INFO : bertipe integer
LINK : bertipe pointer
c. Simpul no.1 :
Field INFO berisi 10
Field LINK berisi alamat simpul no. 2
d. Simpul no.1 ditunjuk oleh pointer FIRST
e. Simpul no.4 ditunjuk oleh pointer LAST

Ilustrasi sebuah simpul :
Untuk mempersiapkan sebuah linked list maka harus dideklarasikan sbb :

II. Proses
a. Inisialisasi : persiapan pembuatan linked list
b. Membuat simpul awal
c. Insert simpul kedalam linked list
d. Delete simpul dari linked list

II.1. Inisialisasi
FIRST = NULL; 
LAST = NULL;

II.2. Pembuatan simpul
Instruksi untuk membuat sebuah simpul :
P=(SIMPUL*) malloc(sizeof(SIMPUL));

Akan terbentuk sebuah simpul yang alamatnya tersimpan dalam pointer P. Ilustrasi :

Fungsi untuk membuat simpul :
void BUAT_SIMPUL(int X) 
{
    P=(SIMPUL*) malloc(sizeof(SIMPUL)); 
    if(P!=NULL) 
    { 
       P->INFO=X; 
    } else 
       cout<<”Pembuatan simpul gagal”; 
}

Ilustrasi :

Contoh :
#include<iostream.h> 
#include<stdlib.h> 
struct SIMPUL
    int INFO; 
    struct SIMPUL *LINK; 
}; 
SIMPUL *P,*FIRST,*LAST; 
void BUAT_SIMPUL(int); 
void main(void) 
{
    int x; 
    cout<<"Masukan Data : ";cin>>x; 
    BUAT_SIMPUL(x); 
    cout<<"Data : "<<P->INFO<<endl; 
void BUAT_SIMPUL(int x) 
    P=(SIMPUL *)malloc(sizeof(SIMPUL)); 
    if(P!=NULL) 
       P->INFO=x; 
    else cout<<"Pembuatan Simpul Gagal"<<endl; 
}

II. 3. Pembuatan simpul awal
Menjadikan sebuah simpul menjadi simpul awal dari sebuah linked list. Simpul awal ditunjuk oleh pointer FIRST.
Fungsi :
Void AWAL(void) 
     if(FIRST==NULL) { 
        FIRST=P; 
        LAST=P; 
        P->LINK=NULL; 
     } else 
         cout<<”Linked List sudah ada””<<endl; 
}

Ilustrasi :
Sudah dibuat simpul sbb:


II.4. Insert Kanan
Menyisipkan sebuah simpul baru pada ujung kanan linked list.
Proses :
- sudah ada linked list
- buat simpul baru
- sisipkan simpul baru tsb diujung kanan linked list
Fungsi :

void INSERT_KANAN(void) 
    if(LAST!=NULL) { 
        LAST->LINK=P; 
        LAST=P; P->LINK=NULL; 
    } else 
        cout<<”Linked List belum ada”; 
}

Ilustrasi :

II.5. Insert Kiri
Menyisipkan sebuah simpul baru pada ujung kiri linked list.
Proses :
- sudah ada linked list
- buat simpul baru
- sisipkan simpul baru tsb diujung kiri linked list
Fungsi :

void INSERT_KIRI(void) 
    if(FIRST!=NULL)
        P->LINK=FIRST; 
        FIRST=P; 
    } else 
        cout<<”Linked List belum ada”; 
}

Ilustrasi:

II.6. Insert Tengah
Menyisipkan sebuah simpul antara dua buah simpul pada linked list.

setelah diinsert menjadi :

Syarat : simpul no.7 harus sudah ditunjuk oleh pointer Q, caranya :
Q=FIRST; 
For(i=1;i<=6;i++) 
   Q=Q->LINK;

Fungsi : 
Void INSERT_TENGAH(void) 
{ 
     P->LINK=Q->LINK; 
     Q->LINK=P; 
}

Ilustrasi :

II.7. Delete Kanan/Akhir
Menghapus simpul yang ada pada linked list paling akhir/kanan.
Ilustrasi : sudah ada sebuah linked list
akan dihapus simpul terakhir menjadi :

Syarat agar simpul no.8 dapat dihapus adalah simpulno.7 sudah ditunjuk oleh pointer Q.
Caranya :
Q = FIRST;
while(Q ->LINK != LAST) 
    Q = Q -> LINK;

Fungsi : 
void DELETE_KANAN(void) 
     free(LAST); 
     LAST = Q; 
     LAST -> LINK = NULL; 
}

Ilustrasi :

II.8. Delete Kiri/Awal
Menghapus simpul yang ada pada linked list paling awal/kiri.
Ilustrasi : sudah ada sebuah linked list

akan dihapus simpul awal menjadi :
Fungsi :
void DELETE_KIRI(void) 
    Q = FIRST; 
    FIRST = Q -> LINK; 
    free(Q); 
}

Ilustrasi :

II.9. Delete Tengah
Menghapus simpul yang ada diantara dua simpul lain.
Ilustrasi : sudah ada linked list
simpul no.7 akan dihapus sehingga menjadi :
Syarat agar simpul no.7 bisa dihapus maka simpul no.6 harus sudah ditunjukoleh Q.
Caranya :
Q = FIRST; 
For(I = 1; I <= 5; I++) 
     Q = Q -> LINK;

Fungsi : 
void DELETE_TENGAH(void) 
     R = Q -> LINK;
     Q -> LINK = R -> LINK; 
     free(R); 
}

Ilustrasi :

Komentar

Postingan populer dari blog ini

LINEAR QUEUE

STACK/TUMPUKAN

TIPE DATA DAN HIRARKI DATA