• Tidak ada hasil yang ditemukan

LIST BERKAIT(LINKED LIST)

N/A
N/A
Protected

Academic year: 2021

Membagikan "LIST BERKAIT(LINKED LIST)"

Copied!
6
0
0

Teks penuh

(1)

LIST BERKAIT(LINKED LIST)

Pertemuan : 13-14

Dosen Pembina : Danang Junaedi

Program Studi Teknik Informatika – Universitas Widyatama

1 IF-UTAMA



Tujuan Instruksional



Pendahuluan



Pembentukan List Berkait



Menampilkan Data pada List Berkait



Studi Kasus



Tugas Individu

Overview

2 IF-UTAMA

Tujuan Instruksional



Mahasiswa akan dapat



Menjelaskan pengertian dan manfaat list berkait



Menjelaskan

pengelolaan

list

berkait

(Membentuk,

Menampilkan data, Mencari dan Menghapus data)



Mengimplementasikan

pengelolaan

list

berkait

(Membentuk,

Menampilkan

data,

Mencari

dan

Menghapus data)

3

IF-UTAMA

Pendahuluan (1)



List atau disebut juga Pointer



variabel yang berisi alamat memori sebagai nilainya.



berisi alamat dari variabel yang mempunyai nilai tertentu.



tidak secara langsung berisi suatu nilai tetapi berisi alamat memori

dari nilai tersebut



Cara pendeklarasian :



Algoritma :

<nama variabel list berkait/pointer> : ^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

4

(2)

Pendahuluan (2)

IF-UTAMA 5

Contoh List Tunggal (Single List)

int I = 5;

int *IPointer;

IPointer = &I;

I 5 I IPointer 5 IPointer Alamat di memori I 5 I IPointer 5 0012FED4 IPointer 0012FED4 0012FED6 0012FED6 0012FED4

Pendahuluan (3)

6



Pada umumnya suatu linked list memiliki sejumlah elemen, di mana salah satu

elemen yang paling awal (elemen kepala atau head) bersifat agak khusus dan

tidak digunakan untuk menyimpan data.



List Berkait (Linked List) terdiri dari 2 komponen utama yaitu komponen nilai/info

dari list itu sendiri dan komponen yang mencatat alamat dari suatu nilai/list

berikutnya.



Gambar Elemen Dasar Sebuah Linked List

Informasi

Pointer



Struktur ini terdiri atas rangkaian elemen yang saling berhubungan /berkaitan,

dimana setiap elemen dihubungkan dengan elemen lainnya, oleh sebuah pointer.

Jadi setiap elemen dalam linked list selalu berisi/mengandung pointer.



Pointer adalah sebuah sel dalam suatu elemen yang berfungsi sebagai penunjuk

letak elemen yang lain (nilainya merupakan alamat elemen yang lain).

Pendahuluan (4)



Jenis List/Pointer (Lanjutan):



Single Linked List

Contoh



Double Linked List



Multiple Linked List

di bahas pada mata kuliah Struktur Data &



Circular Linked List

Algoritma Lanjut



NULL berarti komponen yang mencatat alamat list

berikutnya bernilai kosong

Info Next_List NULL (kosong/List terakhir)

7

Pendahuluan (5)

8



Gambar Contoh sebuah List yang Berisi Beberapa Elemen List

Head

Info Next



Berikut ini diberikan contoh penulisan suatu struktur data list :

Algoritma

Type simpul= ^mylist

mylist = record

Info :char

Next : simpul

End

C/C++

typedef struct{

Info : char;

Next : simpul;

} mylist ;

Mylist *simpul;

(3)

Pembentukan List Berkait (1)

 Pendeklarasian List struct <Nama List>{

<tipe data> <Nama Info>; <Nama List> *<Nama Pointer>; }; Contoh : a. Struct List{ int Info; List Next; }; Atau b. Struct Simpul{ int No_Urut; char Nama[25]; float IPK; Simpul *Berikutnya; };

Nama Info Nama Pointer Berisi Nilai dari List

Berisi alamat dari list berikutnya

Info Next

Berisi Nilai dari List

Berisi alamat dari list berikutnya

No_Urut Nama IPK Berikutnya

Berisi Nilai dari List

Berisi alamat dari list berikutnya

9

IF-UTAMA

Pembentukan List Berkait (2)

 Pembentukan List Baru

<Nama List Baru> = new <Nama List> Contoh berdasarkan pendeklarasian di atas a. Baru = new List //perintah untuk membuat list baru

Baru -> Info =25 atau cin>>Baru -> info //Masukan data ke Info

b.Simpul Anyar = new Simpul //perintah untuk membuat Simpul baru Simpul Anyar -> No_Urut = 001 atau cin>> Simpul Anyar -> No_Urut Simpul Anyar -> Nama = “Saya” atau cin>> Simpul Anyar -> Nama Simpul Anyar -> IPK = 3.56 atau cin>> Simpul Anyar -> IPK

 Operator untuk menunjukan posisi komponen yang sedang aktif/digunakan  Algoritma : ^.

 C/C++ : ->

25 / Nilai yang di-input-kan

001 Saya 3.56

10

IF-UTAMA

Pembentukan List Berkait (3)

 Penambahan List Baru ke dalam Elemen List  List Kosong (Awal/Head = NULL)

 List Isi Tambah di Awal 25 Awal/Akhir 25 1. Awal = Baru 2. Akhir = Baru 3. Baru -> Next = NULL Baru Awal 1 2 Akhir 3 Awal/Head Awal 35

25 1. Baru -> Next = Awal

2. Awal = Baru Baru 35 25 2 1 Baru Akhir Akhir 11 IF-UTAMA

Pembentukan List Berkait (4)



List Isi (lanjutan)

Tambah di Akhir

1. Akhir -> Next = Baru 2. Akhir = Baru 3. Baru -> Next = NULL 45 Baru 25 Awal 35 3 2 45 Baru 25 Awal 35 1 Akhir Akhir 12 IF-UTAMA

(4)

Pembentukan List Berkait (5)



List Isi (lanjutan)



Tambah di Tengah

1. Telusuri dari posisi awal sampai ditemukan posisi yang sesuai atau posisi paling akhir (NULL) & gunakan Psbl (Pointer sebelum) dan Pnow (Pointer saat ini) sebagai pointer bantu penelusuran

Psbl = NULL ; Pnow = Awal

while (Pnow != NULL && <Posisi belum Sesuai>) {Psbl = Pnow ;Pnow = Pnow -> Next} 2. Psbl = Baru

3. Baru -> Next = Pnow

Awal Awal 15 Baru 25 35 3 2 1 45 15 Baru 25 35 PSbl 45 Pnow Akhir Akhir 13 IF-UTAMA

Menampilkan Data pada List Berkait

Telusuri dari posisi awal sampai ditemukan posisi paling akhir (NULL), Tampilkan & gunakan Pnow (Pointer saat ini) sebagai pointer bantu penelusuran

Pnow = Awal while (Pnow != NULL) {

cout << Pnow -> Info Pnow = Pnow -> Next } Awal/Head 15 25 35 Pnow 45 Arah Penelusuran/Pergeseran 14 IF-UTAMA

Studi Kasus I

Buat Algoritma & Program (gunakan list berkait) untuk kasus di

bawah ini (pilih salah satu)



Data Nilai Mahasiswa



Data Barang



Data Penjualan

Dimana data harus terurut secara Ascending berdasarkan aturan

tertentu, kemudian tampilkan datanya

15

Pencarian Data pada List Berkait

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 apakah data yang dicari ada pada seranai. Ada 2 Kemungkinan Proses Pencarian

Awal 15 25 35 Pnow 45 Arah Penelusuran/Pergeseran

a. Data Tidak Terurut Pnow = Awal

while (Pnow != NULL && Cari_Data != Pnow -> Info) {Pnow = Pnow -> Next} if (Pnow != NULL)

cout<<“Data ditemukan

b. Data Terurut Pnow = Awal

while (Pnow != NULL && Cari_Data > Pnow -> Info) { Pnow = Pnow -> Next} if (Pnow->info == Cari_Data)

cout<<“Data ditemukan 16

(5)

Menghapus Data pada List Berkait (1)

 Dari hasil pencarian data di atas, kemungkinan proses penghapusan data pada List

Berkait yaitu :



List Kosong (Awal/Head = NULL)

printf(“LIST KOSONG”);



List Isi dan hanya tersisa 1 data (Awal = Akhir)

1. Awal -> Next = NULL 2. Akhir = Awal Awal 25 Akhir Awal Akhir 2 1 17 IF-UTAMA

Menghapus Data pada List Berkait (2)



List Isi dan tersisa > 1 data

Hapus di Awal

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

45 25 Awal 35 2 Akhir 45 25 Awal 35 Akhir HapusNow 1 18 IF-UTAMA

Menghapus Data pada List Berkait (3)



List Isi dan tersisa > 1 data (lanjutan)

Hapus di Akhir Telusuri Sampai HapusNow->info == Data yang akan dihapus dan jika HapusNow == Akhir, maka langkah penghapusannya adalah :

1. HapusSbl -> Next = NULL 2. Akhir = HapusSbl 45 25 Awal 35 1 Akhir 45 25 Awal 35 Akhir HapusNow HapusSbl 2 19 IF-UTAMA

Menghapus Data pada List Berkait (4)



List Isi dan tersisa > 1 data (lanjutan)

Hapus di Tengah

Telusuri Sampai HapusNow->info == Data yang akan dihapus dan jika HapusNow != Akhir, maka langkah penghapusannya adalah :

1. HapusSbl -> Next = HapusNow -> Next 45 25 Awal 35 1 Akhir 55 45 25 Awal 35 Akhir HapusNow HapusSbl 55 20 IF-UTAMA

(6)

Studi Kasus II

Lanjutkan Studi Kasus I dengan menambahkan fungsi-fungsi

sebagai berikut:



Data Nilai Mahasiswa (data terurut & tidak terurut)

 Mencari IPK tertinggi dan terendah kemudian tampilkan NIM-nya

 Menghitung IPK rata-rata

 Hapus Data Nilai Mahasiswa dengan IPK terendah 

Data Barang (data terurut & tidak terurut)

 Mencari Jumlah barang tertinggi dan terendah kemudian tampilkan kode barangnya

 Menghitung Jumlah Barang rata-rata

 Hapus Data Barang dengan jumlah barang terendah



Data Penjualan (data terurut & tidak terurut)

 Mencari Jumlah Penjualan tertinggi dan terendah kemudian tampilkan kode

sales dan kode barangnya

 Menghitung rata-rata penjualan

 Hapus Data Penjualan dengan jumlah penjualan terendah

21

IF-UTAMA

Untuk bahan renungan bersama

 Siapakah orang yang rugi?

Orang yang rugi adalah orang yang sudah sampai usia pertengahan namun masih berat untuk melakukan ibadat dan amal-amal kebaikan. Maka hargailah waktumu dan bersegeralah

 Siapakah orang yang paling cantik/Tampan?

Orang yang paling cantik/Tampan adalah orang yang mempunyai akhlak yang baik. Maka peliharalah akhlakmu dari dosa dan noda

 Siapakah orang yang mempunyai rumah yang paling luas?

Orang yang mempunyai rumah yang paling luas adalah orang yang mati membawa amal-amal kebaikan dimana kuburnya akan di perluaskan sejauh mata memandang. Maka beramal shalehlah selagi sempat dan mampu

 Siapakah orang yang mempunyai rumah yang sempit lagi dihimpit ?

Orang yang mempunyai rumah yang sempit adalah orang yang mati tidak membawa amal-amal kebaikkan lalu kuburnya menghimpitnya. Maka ingatlah akan kematian dan kehidupan setelah dunia

 Siapakah orang yang mempunyai akal ?

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

22

Referensi

Dokumen terkait

Distribusi fonem konsonan BA dalam kata, hanya menempati posisi awal dan tengah, sedangkan pada posisi akhir tidak ditemukan.. Fonem konsonan yang menempati posisi awal, tengah,

Karena medan sambungan dari simpul sebelum simpul yang dihapus harus terhubung ke simpul berikutnya dari simpul yang dihapus, maka harus ada pointer bantuan (bantu) yang

Kalau head tidak bernilai NULL alias telah dimiliki satu atau lebih node, yang pertama dilakukan adalah menghubungkan pointer next dari node aktif (curr) ke node yang baru saja

Keadaan Linked List setelah terjadi penyisipan satu simpul di belakang pada list yang tidak kosong:.. Procedure SisipBelakangSingle(Input elemen : tipedata, I/O awal, akhir

Double Link list juga selalu memiliki pointer petunjuk menunjuk pada akhir dari list yang.. disebut

Merupakan sebuah proses penyisipan simpul baru ke dalam linked list yang dilakukan pada posisi awal/kiri/first linked listK.

Pada tabel 20 menunjukkan bahwa grafem &lt;m&gt; direpresentasikan dengan grafem &lt; &gt; dapat ditemukan di semua posisi, baik awal, tengah, maupun akhir

Method-method pada class SingleLinkedList class SingleLinkedList implements List Praktikum private Node front = null; Variable reference untuk menandai node awal dari SSL SLL 1