Anda di halaman 1dari 6

4/9/2012

IF-UTAMA 1

Overview
2

 Tujuan Instruksional
Pendahuluan
LIST BERKAIT(LINKED LIST) 

 Pembentukan List Berkait


 Menampilkan Data pada List Berkait
 Studi Kasus
Pertemuan : 13-14  Tugas Individu
Dosen Pembina : Danang Junaedi

Program Studi Teknik Informatika – Universitas Widyatama


IF-UTAMA

Tujuan Instruksional Pendahuluan (1)


3 4

 Mahasiswa akan dapat  List atau disebut juga Pointer


 Menjelaskan pengertian dan manfaat list berkait  variabel yang berisi alamat memori sebagai nilainya.
 berisi alamat dari variabel yang mempunyai nilai tertentu.
 Menjelaskan pengelolaan list berkait (Membentuk,  tidak secara langsung berisi suatu nilai tetapi berisi alamat memori
Menampilkan data, Mencari dan Menghapus data) dari nilai tersebut
 Mengimplementasikan pengelolaan list berkait  Cara pendeklarasian :
(Membentuk, Menampilkan data, Mencari dan  Algoritma : <nama variabel list berkait/pointer> : ^Data
Menghapus data)  C/C++: <tipe data> *<nama variabel list berkait/pointer>

 Jenis List/Pointer :
 List Tunggal (Single List) terdiri dari maksimum 1 komponen yaitu
komponen yang mencatat alamat dari suatu nilai

IF-UTAMA IF-UTAMA

1
4/9/2012

Pendahuluan (2) Pendahuluan (3)


5 6

Contoh List Tunggal (Single List)  Pada umumnya suatu linked list memiliki sejumlah elemen, di mana salah satu
int I = 5; elemen yang paling awal (elemen kepala atau head) bersifat agak khusus dan
I I tidak digunakan untuk menyimpan data.
5 0012FED4 5
 List Berkait (Linked List) terdiri dari 2 komponen utama yaitu komponen nilai/info
IPointer dari list itu sendiri dan komponen yang mencatat alamat dari suatu nilai/list
int *IPointer; 0012FED6 berikutnya.
IPointer
IPointer  Gambar Elemen Dasar Sebuah Linked List
0012FED6 0012FED4 Informasi Pointer
IPointer = &I; IPointer I  Struktur ini terdiri atas rangkaian elemen yang saling berhubungan /berkaitan,
I dimana setiap elemen dihubungkan dengan elemen lainnya, oleh sebuah pointer.
5
0012FED4 5 Jadi setiap elemen dalam linked list selalu berisi/mengandung pointer.
 Pointer adalah sebuah sel dalam suatu elemen yang berfungsi sebagai penunjuk
Alamat di memori
letak elemen yang lain (nilainya merupakan alamat elemen yang lain).

IF-UTAMA

Pendahuluan (4) Pendahuluan (5)


7 8

 Jenis List/Pointer (Lanjutan):  Gambar Contoh sebuah List yang Berisi Beberapa Elemen List
Head
 Single Linked List
Contoh Info Next
Info Next_List NULL (kosong/List terakhir)  Berikut ini diberikan contoh penulisan suatu struktur data list :
 Double Linked List Algoritma C/C++
 Multiple Linked List di bahas pada mata kuliah Struktur Data & Type simpul= ^mylist typedef struct{
mylist = record Info : char;
 Circular Linked List Algoritma Lanjut Info :char Next : simpul;
 NULL berarti komponen yang mencatat alamat list Next : simpul } mylist ;
End Mylist *simpul;
berikutnya bernilai kosong

IF-UTAMA

2
4/9/2012

Pembentukan List Berkait (1) Pembentukan List Berkait (2)


9 10

 Pendeklarasian List  Pembentukan List Baru


struct <Nama List>{ Nama Info Nama Pointer
<tipe data> <Nama Info>; Berisi alamat dari list <Nama List Baru> = new <Nama List>
<Nama List> *<Nama Pointer>; berikutnya
Berisi Nilai dari List Contoh berdasarkan pendeklarasian di atas
};
a. Baru = new List //perintah untuk membuat list baru
Contoh :
a. Struct List{ Baru -> Info =25 atau cin>>Baru -> info //Masukan data ke Info
int Info;
Berisi alamat dari list berikutnya 25 / Nilai yang di-input-kan
List Next; Info Next
}; b. Simpul Anyar = new Simpul //perintah untuk membuat Simpul baru
Atau Berisi Nilai dari List Simpul Anyar -> No_Urut = 001 atau cin>> Simpul Anyar -> No_Urut
b. Struct Simpul{
Simpul Anyar -> Nama = “Saya” atau cin>> Simpul Anyar -> Nama
int No_Urut;
char Nama[25]; Simpul Anyar -> IPK = 3.56 atau cin>> Simpul Anyar -> IPK
float IPK; No_Urut Nama IPK Berikutnya
Simpul *Berikutnya;
001 Saya 3.56
}; Berisi alamat dari list  Operator untuk menunjukan posisi komponen yang sedang aktif/digunakan
Berisi Nilai dari List berikutnya  Algoritma : ^.
 C/C++ : ->

IF-UTAMA IF-UTAMA

Pembentukan List Berkait (3) Pembentukan List Berkait (4)


11 12

 Penambahan List Baru ke dalam Elemen List


 List Isi (lanjutan)
 List Kosong (Awal/Head = NULL)
Awal/Akhir  Tambah di Akhir
Awal Awal
Awal
Akhir 2 1
Akhir Akhir
1. Awal = Baru
25 35 25 Baru
Baru 2. Akhir = Baru 35 25
1 45 3
25 3 3. Baru -> Next = NULL Baru
2
 List Isi 45
 Tambah di Awal
Awal/Head 1. Akhir -> Next = Baru
Awal
Akhir Akhir 2. Akhir = Baru
1. Baru -> Next = Awal 3. Baru -> Next = NULL
25 25
Baru 2. Awal = Baru
Baru 2
35 1
35
IF-UTAMA IF-UTAMA

3
4/9/2012

Pembentukan List Berkait (5) Menampilkan Data pada List Berkait


13 14
 List Isi (lanjutan) Awal/Head
1 Pnow Arah Penelusuran/Pergeseran
 Tambah di Tengah
Awal
Awal 25 45
Akhir PSbl Pnow Akhir 35 15

35 25 45 35 25 45 Telusuri dari posisi awal sampai ditemukan posisi paling akhir (NULL), Tampilkan &
Baru 2 3 gunakan Pnow (Pointer saat ini) sebagai pointer bantu penelusuran
15 Baru
15 Pnow = Awal
1. Telusuri dari posisi awal sampai ditemukan posisi yang sesuai atau posisi paling akhir (NULL) while (Pnow != NULL)
& gunakan Psbl (Pointer sebelum) dan Pnow (Pointer saat ini) sebagai pointer bantu {
penelusuran cout << Pnow -> Info
Psbl = NULL ; Pnow = Awal Pnow = Pnow -> Next
while (Pnow != NULL && <Posisi belum Sesuai>) {Psbl = Pnow ;Pnow = Pnow -> Next} }
2. Psbl = Baru
3. Baru -> Next = Pnow
IF-UTAMA IF-UTAMA

Studi Kasus I Pencarian Data pada List Berkait


15 16
Awal
Buat Algoritma & Program (gunakan list berkait) untuk kasus di Pnow Arah Penelusuran/Pergeseran

bawah ini (pilih salah satu) 35 15 25 45

 Data Nilai Mahasiswa Secara garis besar, proses untuk mencari data yang terdapat pada suatu list hampir sama
dengan proses membaca isi list, tetapi perlu ditambah dengan test untuk menentukan
 Data Barang
apakah data yang dicari ada pada seranai. Ada 2 Kemungkinan Proses Pencarian
 Data Penjualan

Dimana data harus terurut secara Ascending berdasarkan aturan a. Data Tidak Terurut b. Data Terurut
Pnow = Awal Pnow = Awal
tertentu, kemudian tampilkan datanya
while (Pnow != NULL && while (Pnow != NULL &&
Cari_Data != Pnow -> Info) Cari_Data > Pnow -> Info)
{Pnow = Pnow -> Next} { Pnow = Pnow -> Next}
if (Pnow != NULL) if (Pnow->info == Cari_Data)
cout<<“Data ditemukan cout<<“Data ditemukan
else else
cout<<“Data tidak ditemukan” cout<<“Data tidak ditemukan”
IF-UTAMA IF-UTAMA

4
4/9/2012

Menghapus Data pada List Berkait (1) Menghapus Data pada List Berkait (2)
17 18

 Dari hasil pencarian data di atas, kemungkinan proses penghapusan data pada List  List Isi dan tersisa > 1 data
Berkait yaitu :
 Hapus di Awal
 List Kosong (Awal/Head = NULL) Awal
Akhir
printf(“LIST KOSONG”);
35 25 45
 List Isi dan hanya tersisa 1 data (Awal = Akhir)
Awal Awal
Akhir Awal 1
Akhir
HapusNow Akhir
25 2
1
35 25 45

1. Awal -> Next = NULL


2 1. HapusNow = Awal
2. Akhir = Awal
2. Awal = HapusNow -> Next

IF-UTAMA IF-UTAMA

Menghapus Data pada List Berkait (3) Menghapus Data pada List Berkait (4)
19 20

 List Isi dan tersisa > 1 data (lanjutan)  List Isi dan tersisa > 1 data (lanjutan)
 Hapus di Tengah
 Hapus di Akhir Telusuri Sampai HapusNow->info == Data yang Awal
Awal akan dihapus dan jika HapusNow == Akhir, maka Akhir
Akhir langkah penghapusannya adalah :
35 25 45 55
1. HapusSbl -> Next = NULL
35 25 45
2. Akhir = HapusSbl
Awal
HapusSbl HapusNow Akhir
Awal 45 55
HapusNow 35 25
HapusSbl Akhir
1
Telusuri Sampai HapusNow->info == Data yang
35 25 45 2 akan dihapus dan jika HapusNow != Akhir, maka
langkah penghapusannya adalah :
1
1. HapusSbl -> Next = HapusNow -> Next

IF-UTAMA IF-UTAMA

5
4/9/2012

Studi Kasus II Untuk bahan renungan bersama


21 22

Lanjutkan Studi Kasus I dengan menambahkan fungsi-fungsi  Siapakah orang yang rugi?
sebagai berikut: Orang yang rugi adalah orang yang sudah sampai usia pertengahan namun masih berat untuk
 Data Nilai Mahasiswa (data terurut & tidak terurut) melakukan ibadat dan amal-amal kebaikan. Maka hargailah waktumu dan bersegeralah
 Mencari IPK tertinggi dan terendah kemudian tampilkan NIM-nya  Siapakah orang yang paling cantik/Tampan?
 Menghitung IPK rata-rata Orang yang paling cantik/Tampan adalah orang yang mempunyai akhlak yang baik. Maka
 Hapus Data Nilai Mahasiswa dengan IPK terendah peliharalah akhlakmu dari dosa dan noda
 Data Barang (data terurut & tidak terurut)  Siapakah orang yang mempunyai rumah yang paling luas?
 Mencari Jumlah barang tertinggi dan terendah kemudian tampilkan kode Orang yang mempunyai rumah yang paling luas adalah orang yang mati membawa amal-amal
barangnya kebaikan dimana kuburnya akan di perluaskan sejauh mata memandang. Maka beramal
 Menghitung Jumlah Barang rata-rata shalehlah selagi sempat dan mampu
 Hapus Data Barang dengan jumlah barang terendah  Siapakah orang yang mempunyai rumah yang sempit lagi dihimpit ?
 Data Penjualan (data terurut & tidak terurut) Orang yang mempunyai rumah yang sempit adalah orang yang mati tidak membawa amal-
 Mencari Jumlah Penjualan tertinggi dan terendah kemudian tampilkan kode amal kebaikkan lalu kuburnya menghimpitnya. Maka ingatlah akan kematian dan kehidupan
sales dan kode barangnya setelah dunia
 Menghitung rata-rata penjualan  Siapakah orang yang mempunyai akal ?
 Hapus Data Penjualan dengan jumlah penjualan terendah Orang yang mempunyai akal adalah orang-orang yang menghuni syurga kelak, karena telah
menggunakan akal sewaktu di dunia untuk menghindari siksa neraka. Maka peliharalah akal
sehatmu dan pergunakan semaksimal mungkin untuk mengharap ridho-Nya

IF-UTAMA IF-UTAMA

Anda mungkin juga menyukai