IF-UTAMA 1
Overview
2
Tujuan Instruksional
Pendahuluan
LIST BERKAIT(LINKED LIST)
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
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
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
IF-UTAMA IF-UTAMA
3
4/9/2012
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
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
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
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