0% menganggap dokumen ini bermanfaat (0 suara)
346 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
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
346 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
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
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