0% menganggap dokumen ini bermanfaat (0 suara)
335 tayangan

Modul 10 Linear Singly Linked List

Modul ini membahas tentang definisi, ilustrasi, dan proses-proses dasar pada linked list linear tunggal (singly linked list) seperti pembuatan simpul, penyisipan simpul di berbagai posisi, dan penghapusan simpul di berbagai posisi.

Diunggah oleh

Hanaan Ridho
Hak Cipta
© © All Rights Reserved
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
335 tayangan

Modul 10 Linear Singly Linked List

Modul ini membahas tentang definisi, ilustrasi, dan proses-proses dasar pada linked list linear tunggal (singly linked list) seperti pembuatan simpul, penyisipan simpul di berbagai posisi, dan penghapusan simpul di berbagai posisi.

Diunggah oleh

Hanaan Ridho
Hak Cipta
© © All Rights Reserved
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 37

Modul 10

Linear Singly Linked List

Atang Susila T Informatika UNPAM


Definisi
 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
Atang Susila T Informatika UNPAM
Ilustrasi

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

Atang Susila T Informatika UNPAM


Ilustrasi sebuah simpul

Untuk mempersiapkan sebuah linked list maka harus dideklarasikan sbb :

struct SIMPUL{
int INFO;
struct SIMPUL *LINK;
};
SIMPUL *P,*Q,*FIRST,*LAST;
Atang Susila T Informatika UNPAM
Proses

 Inisialisasi : persiapan
pembuatan linked list
 Membuat simpul awal
 Insert simpul kedalam linked list
 Delete simpul dari linked list

Atang Susila T Informatika UNPAM


1. Inisialisasi

FIRST = NULL;
LAST = NULL;

Atang Susila T Informatika UNPAM


2. Pembuatan Simpul(1)

Instruksi untuk membuat sebuah simpul :

P=(SIMPUL*) malloc(sizeof(SIMPUL));

Akan terbentuk sebuah simpul yang alamatnya tersimpan dalam


pointer P. Ilustrasi :

Atang Susila T Informatika UNPAM


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

Atang Susila T Informatika UNPAM


2. Pembuatan Simpul (3)
#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;
} Atang Susila T Informatika UNPAM
3. Pembuatan Simpul Awal(1)
Menjadikan sebuah simpul menjadi simpul awal dari sebuah linked list.
Simpul awal ditunjuk oleh pointer FIRST.

Void AWAL(void)
{
if(FIRST==NULL)
{
FIRST=P;
LAST=P;
P->LINK=NULL;
}
else
cout<<”Linked List sudah ada””<<endl;
}
Atang Susila T Informatika UNPAM
3. Pembuatan Simpul Awal(2)
Ilustrasi :

Sudah dibuat simpul sbb:

Atang Susila T Informatika UNPAM


4. Insert Kanan (1)
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

void INSERT_KANAN(void)
{
if(LAST!=NULL)
{
LAST->LINK=P;
LAST=P;
P->LINK=NULL;
}
else
cout<<”Linked List belum ada”;
}
Atang Susila T Informatika UNPAM
4. Insert Kanan (2)
Ilustrasi :

Sudah ada linked list

Buat simpul baru


P=(SIMPUL *)malloc(sizeof(SIMPUL));

LAST->LINK=P atau
FIRST->LINK=P
Atang Susila T Informatika UNPAM
4. Insert Kanan (3)

LAST=P atau
LAST=FIRST->LINK

P->LINK=NULL atau
LAST->LINK=NULL atau
FIRST->LINK->LINK=NULL

Atang Susila T Informatika UNPAM


5. Insert Kiri (1)
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”;
}
Atang Susila T Informatika UNPAM
5. Insert Kiri (2)

Sudah ada
linked list

Buat simpul baru


P=(SIMPUL *)malloc(sizeof(SIMPUL));

Atang Susila T Informatika UNPAM


5. Insert Kiri (3)

P->LINK=FIRST
atau
P->LINK=LAST

FIRST=P

Atang Susila T Informatika UNPAM


6. Insert Tengah (1)
Menyisipkan sebuah simpul antara dua buah simpul pada linked list.
setelah diinsert menjadi :

Syarat : simpul no.7 harus Fungsi :


sudah ditunjuk oleh pointer Q,
caranya : void INSERT_TENGAH(void)
{
P->LINK=Q->LINK;
Q=FIRST;
For(i=1;i<=6;i++) Q->LINK=P;
Q=Q->LINK; }
Atang Susila T Informatika UNPAM
6. Insert Tengah (2)
Ilustrasi :

Sudah ada linked list

Atang Susila T Informatika UNPAM


6. Insert Tengah (3)
Buat simpul baru
P=(SIMPUL *)malloc(sizeof(SIMPUL));

Atang Susila T Informatika UNPAM


6. Insert Tengah (4)
P->LINK=Q->LINK

Atang Susila T Informatika UNPAM


6. Insert Tengah (5)
Q->LINK=P

Atang Susila T Informatika UNPAM


7. Delete Kanan/Akhir(1)
Menghapus simpul yang ada pada linked list paling akhir/kanan.

sudah ada sebuah linked list akan dihapus simpul terakhir menjadi :

Atang Susila T Informatika UNPAM


7. Delete Kanan/Akhir(2)
Syarat agar simpul no.8 dapat dihapus adalah simpulno.7
sudah ditunjuk oleh pointer Q.

Caranya : Fungsi :
Q = FIRST; void DELETE_KANAN(void)
while(Q ->LINK != LAST) {
Q = Q -> LINK; free(LAST);
LAST = Q;
LAST -> LINK = NULL;
}

Atang Susila T Informatika UNPAM


7. Delete Kanan/Akhir(3)
Ilustrasi :

Sudah ada linked list

free(LAST)

Atang Susila T Informatika UNPAM


7. Delete Kanan/Akhir(4)

LAST = Q

LAST -> LINK = NULL

Atang Susila T Informatika UNPAM


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

sudah ada sebuah linked list akan dihapus simpul


awal menjadi :

Atang Susila T Informatika UNPAM


8. Delete Kiri/Awal(2)
Fungsi :

void DELETE_KIRI(void)
{
Q = FIRST;
FIRST = Q -> LINK;
free(Q);
}

Atang Susila T Informatika UNPAM


8. Delete Kiri/Awal(3)

Sudah ada linked list

Q = FIRST

Atang Susila T Informatika UNPAM


8. Delete Kiri/Awal(4)

FIRST = Q -> LINK

free(Q)

Tuliskan cara lain!


Tip : Tempatkan Q pada simpulkedua, hapus simpul pertama, pindahkan
FIRST ke simpul kedua.
Atang Susila T Informatika UNPAM
9. Delete Tengah (1)
Menghapus simpul yang ada diantara dua simpul lain.

sudah ada linked list simpul no.7 akan dihapus


sehingga menjadi :

Atang Susila T Informatika UNPAM


9. Delete Tengah (2)
Syarat agar simpul no.7 bisa dihapus maka simpul no.6 harus sudah
ditunjukoleh Q.

Caranya : Fungsi :

Q = FIRST; void DELETE_TENGAH(void)


For(I = 1; I <= 5; I++) {
Q = Q -> LINK; R = Q -> LINK;
Q -> LINK = R -> LINK;
free(R);
}

Atang Susila T Informatika UNPAM


9. Delete Tengah (3)
Ilustrasi :

Sudah ada linked list

R = Q -> LINK

Atang Susila T Informatika UNPAM


9. Delete Tengah (4)

Q -> LINK = R -> LINK

free(R)

Atang Susila T Informatika UNPAM


Latihan (1):
1. Perhatikan linked list berikut :

c. Sebutkan TRUE atau FALSE kondisi tiap


a. Sebutkan nama dan isi pernyataan dibawah ini :
tiap-tiap pointer 1) if(P->LINK==R)
b. Sebutkan pointer- 2) if(Q->LINK==R->LINK)
pointer yang isinya sama 3) if(Q->LINK->LINK==S->LINK)
4) if(Q==R)
5) if(Q-LINK==R)
6) if(R->LINK->INFO==5)
Atang Susila T Informatika UNPAM
7) if(Q->INFO==4)
Latihan (2):
2. Perhatikan linked list berikut :

Jumlah simpul lebih dari 20 buah


Susunlah pernyataan bahasa C untuk:
a. Menempatkan pointer Q sehingga menunjuk simpul nomor 1
b. Menempatkan pointer Q sehingga menunjuk simpul nomor 7
c. Menempatkan pointer Q sehingga menunjuk simpul nomor terakhir
d. Menenmpatkan pointer Q sehingga menunjuk simpul dengan INFO = 50
e. Menghapus simpul yang berisi INFO = 40
Atang Susila T Informatika UNPAM
TUGAS
Buat program animasi Linear Singly Linked List untuk mengelola data mahasiswa
dengan struktur mahasiswa sbb : NAMA, NIM, GENDER, NILAI STRUKTUR DATA.
Program dibuat dalam bentuk menu dengan pilihan : INSERT DATA, HAPUS DATA,
CETAK DATA, EXIT.
Ket :
INSER DATA : menyisipkan satu simpul pada akhir linked list
HAPUS DATA :menghapus satu simpul pada akhir linked list
CETAK DATA : mencetak seluruh isi linked list
EXIT : Keluar/selesai

Tampilan menu :
LIN. SINGLY LINKED LIST
==========================
1.INSERT DATA
2.HAPUS DATA
3.CETAK DATA
4.EXIT
Pilihan (1 – 4) :
Atang Susila T Informatika UNPAM

Anda mungkin juga menyukai