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
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)
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
Posting Komentar