• Tidak ada hasil yang ditemukan

List Linier (Bag. I) IF2121/Algoritma dan Struktur Data Sem. I 2016/ /25/2017 IF2121/Sem I 2017/2018 1

N/A
N/A
Protected

Academic year: 2022

Membagikan "List Linier (Bag. I) IF2121/Algoritma dan Struktur Data Sem. I 2016/ /25/2017 IF2121/Sem I 2017/2018 1"

Copied!
18
0
0

Teks penuh

(1)

9/25/2017 IF2121/Sem I 2017/2018 1

List Linier (Bag. I)

IF2121/Algoritma dan Struktur Data

Sem. I 2016/2017

(2)

9/25/2017 IF2121/Sem I 2017/2018 2

List Linier

• List linier:

– Sekumpulan elemen ber-type sama yang mempunyai keterurutan tertentu dan setiap elemen terdiri atas 2 bagian:

• Informasi mengenai elemen (Info)

• Informasi mengenai alamat elemen suksesor (Next)

typedef struct { InfoType Info;

address Next;

} ElmtList;

Address

Nil

ElmtList Info Next

@

(3)

9/25/2017 IF2121/Sem I 2017/2018 3

List Linier

• Sebuah list linier dikenali dari:

– elemen pertama list, biasanya melalui alamat elemen pertama yang disebut: First.

– alamat elemen berikutnya (suksesor), jika kita mengetahui alamat sebuah elemen, yang dapat diakses melalui informasi NEXT.

– setiap elemen mempunyai alamat (address), yaitu tempat elemen yang disimpan dapat diacu. Untuk mengacu sebuah elemen, alamat harus terdefinisi.

– elemen terakhirnya.

(4)

9/25/2017 IF2121/Sem I 2017/2018 4

List Linier

• Jika L adalah list, dan P adalah address:

– Untuk mengacu alamat elemen pertama list L digunakan notasi First(L)

– Elemen yang diacu oleh P dapat diakses informasinya dengan notasi Selektor:

• Info(P) : nilai yang disimpan

• Next(P) : alamat elemen berikutnya

• Definisi List Kosong

– List L adalah list kosong: First(L) = Nil

• Definisi Elemen terakhir

– Next(Last) = Nil, dengan Last adalah alamat elemen

terakhir

(5)

9/25/2017 IF2121/Sem I 2017/2018 5

List Linier

List dengan 3 elemen First

List Kosong

First

(6)

9/25/2017 IF2110R/Sem. I 2016/2017/Dari bahan IF2110 ITB

6

Representasi Fisik

• Implementasi dalam struktur data yang nantinya dapat ditangani oleh pemroses bahasa-bahasa pemrograman

• Tidak semua bahasa dapat mengimplementasi semua struktur fisik yang diuraikan

• Implementasi struktur fisik harus sesuai permasalahan dan ketersediaan bahasa  untuk memperoleh

algoritma yang optimal

• Pada tahapan analisis, yang harus dipakai sebagai pegangan adalah struktur lojik

– mempermudah analisis masalah dan pengembangan algoritma.

• Setelah suatu struktur fisik dipilih, algoritma dalam

struktur lojik yang telah dibahas tinggal diterjemahkan ke

dalam struktur fisik yang dipilih.

(7)

Representasi Berkait Dengan Pointer (1/3)

• Memanfaatkan struktur “pointer” yang

disediakan bahasa pemrograman (contoh bahasa C)

9/25/2017 IF2110R/Sem. I 2016/2017/Dari bahan IF2110 ITB

7

(8)

Representasi Berkait Dengan Pointer (1/3)

#define Nil NULL

typedef ... infotype;

typedef struct tElmtlist *address; /*pointer ke ElmtList*/

typedef struct tElmtlist { infotype info;

address next;

} ElmtList;

typedef struct { address First;

} List;

/* Selektor */

#define Info(P) (P)->info

#define Next(P) (P)->next

#define First(L) ((L).First)

9/25/2017 IF2110R/Sem. I 2016/2017/Dari bahan IF2110 ITB

8

Representasi First secara eksplisit (sebagai sebuah

komponen dari type List)

(9)

9/25/2017 IF2121/Sem I 2017/2018 9

Skema Dasar Pemrosesan List

• Traversal

• Sequential Searching

(10)

9/25/2017 IF2121/Sem I 2017/2018 10

Skema Traversal

• Skema traversal digunakan untuk

memroses setiap elemen list dengan cara yang sama

– Mekanisme: mengunjungi setiap elemen list dimulai dari elemen pertama, suksesornya, dst. sampai elemen terakhir.

• Skema Traversal 1, 2, 3: Diktat Struktur

Data (List Linier) hlm. 2-3.

(11)

9/25/2017 IF2121/Sem I 2017/2018 11

Skema Traversal 1

void SKEMAListTraversal1 (List L)

/* I.S. List L terdefinisi, mungkin kosong

F.S. semua elemen list L "dikunjungi" dan telah diproses Traversal sebuah list linier. Dengan MARK, tanpa pemrosesan khusus pada list kosong */

{ /* KAMUS LOKAL */

address P; /* address untuk traversal, type terdefinisi */

void Proses (address P); /* pemrosesan elemen ber-address P */

void Inisialisasi(); /* aksi sebelum proses dilakukan */

void Terminasi(); /* aksi sesudah semua pemrosesan elemen selesai */

/* ALGORITMA */

Inisialisasi();

P = First(L);

while (P != Nil) { Proses(P);

P = Next(P);

}

Terminasi();

}

(12)

9/25/2017 IF2121/Sem I 2017/2018 12

Skema Traversal 2

void SKEMAListTraversal2 (List L)

/* I.S. List L terdefinisi, mungkin kosong */

/* F.S. Semua elemen list L "dikunjungi" dan telah diproses */

/* Traversal sebuah list linier yang diidentifikasi oleh elemen pertamanya L */

/* Skema sekuensial dengan MARK dan pemrosesan khusus pada list kosong */

{ /* KAMUS LOKAL */

address P; /*address untuk traversal */

void Proses (address P); /* pemrosesan elemen beraddress P */

void Inisialisasi(); /* aksi sebelum proses dilakukan */

void Terminasi(); /* aksi sesudah semua pemrosesan elemen selesai */

/* ALGORITMA */

if (First(L) == Nil) { printf("List kosong");

} else {

Inisialisasi();

P = First(L);

do {

Proses(P);

P = Next(P);

} while (P != Nil);

Terminasi();

} }

(13)

9/25/2017 IF2121/Sem I 2017/2018 13

Skema Traversal 3

void SKEMAListTraversal3 (List L)

/* I.S. List L terdefinisi, tidak kosong : minimal mengandung satu elemen */

/* F.S. Semua elemen list L "dikunjungi" dan telah diproses */

/* Skema sekuensial tanpa MARK, tidak ada list kosong karena tanpa mark */

{ /* KAMUS LOKAL */

address P; /* address untuk traversal, type terdefinisi*/

boolean stop; /* penanda berhenti loop dengan iterate-stop */

void Proses (address P); /* pemrosesas elemen beraddress P */

void Inisialisasi(); /* aksi sebelum proses dilakukan */

void Terminasi(); /* aksi sesudah semua pemrosesan elemen selesai */

/* ALGORITMA */

Inisialisasi();

P = First(L);

stop = false;

do {

Proses(P);

if (Next(P) == Nil) { stop = true;

} else {

P = Next(P);

}

} while (!stop);

Terminasi();

}

(14)

9/25/2017 IF2121/Sem I 2017/2018 14

Skema Sequential Search

• Skema sequential search digunakan untuk mencari suatu elemen list

• Searching dapat dilakukan berdasarkan nilai atau berdasarkan alamat

– Lihat kembali skema sequential search pada array (tabel)

• Diktat Struktur Data (List Linier) hlm. 3 – 5:

– Search suatu nilai, output adalah address

– Search suatu elemen yang beralamat tertentu

– Search suatu elemen dengan kondisi tertentu

(15)

9/25/2017 IF2121/Sem I 2017/2018 15

Search Nilai, Output Address

(Pencarian dengan boolean)

void SKEMAListSearch1 (List L, InfoType X, address * P, boolean * Found)

/* I.S. List linier L sudah terdefinisi dan siap dikonsultasi, X terdefinisi */

/* F.S. P adalah address dimana X diketemukan pada pencarian berurutan, P = Nil jika tidak ketemu */

/* Found berharga true jika harga X yang dicari ketemu, false jika tidak ketemu */

/* Sequential Search harga X pada sebuah list linier L */

/* Elemen diperiksa dengan instruksi yang sama, versi dengan boolean */

{ /* KAMUS LOKAL */

/* ALGORITMA */

*P = First(L);

*Found = false;

while ((*P != Nil) && !(*Found)) { if (X == Info(*P)) {

*Found = true;

} else {

*P = Next(*P);

}

} /* P = Nil or Found*/

/* Jika Found maka P = address dari harga yg dicari diketemukan */

/* Jika not Found maka P = Nil */

}

(16)

9/25/2017 IF2121/Sem I 2017/2018 16

Search Nilai, Output Address

(Pencarian tanpa boolean)

void SKEMAListSearch2 (List L, InfoType X, address * P, boolean * Found)

/* I.S. List linier L sudah terdefinisi dan siap dikonsultasi, X terdefinisi */

/* F.S. P adalah address dimana X ditemukan pada pencarian beurutan, P = Nil jika tidak ketemu */

/* Found berharga true jika harga X yang dicari ketemu, false jika tidak ditemukan */

/* Sequential Search harga X pada sebuah list linier L */

/* Elemen terakhir diperiksa secara khusus, versi tanpa boolean */

{ /* KAMUS LOKAL */

/* ALGORITMA */

/* List linier L sudah terdefinisi dan siap dikonsultasi */

if (First(L) == Nil) { printf ("List kosong");

*Found = false; *P = Nil;

} else { /* First(L) != Nil, elemen pertama ada*/

*P = First(L);

while ((Next(*P) != Nil) && (X != Info(*P)) {

*P = Next(*P);

} /* Next(P) = Nil or X = Info(P) */

if (X == Info(*P)) {

*Found = true;

} else { /* X != Info(P) */

*Found = false; *P = Nil;

} } }

(17)

9/25/2017 IF2121/Sem I 2017/2018 17

Search Elemen Beralamat Tertentu

void SKEMAListSearch@ (List L, address P, boolean * Found)

/* I.S. List linier L sudah terdefinisi dan siap dikonsultasi, P terdefinisi */

/* F.S. Jika ada elemen list yang beralamat P, Found berharga true */

/* Jika tidak ada elemen list beralamat P, Found berharga false */

/* Sequential Search address P pada sebuah list linier L */

/* Semua elemen diperiksa dengan instruksi yang sama */

{ /* KAMUS LOKAL */

address Pt;

/* ALGORITMA */

Pt = First(L);

*Found = false;

while ((Pt != Nil) && !(*Found)) { if (Pt = P) [

*Found = true;

} else {

Pt = Next(Pt);

}

} /* Pt = Nil or Found */

/* Jika Found maka P adalah elemen list */

}

(18)

9/25/2017 IF2121/Sem I 2017/2018 18

Search Elemen Berkondisi Tertentu

void SKEMAListSearchX (List L, boolean Kondisi(P), address * P, boolean * Found) /* I.S. List linier L sudah terdefinisi dan siap dikonsultasi, Kondisi(P) adalah

suatu ekspresi boolean yang merupakan fungsi dari elemen beralamat P */

/* F.S. Jika ada elemen list P yang memenuhi Kondisi (P), maka P adalah alamat dari elemen yang memenuhi kondisi tersebut, Found berharga true */

/* Jika tidak ada elemen list P yang memenuhi Kondisi(P), maka Found berharga false dan P adalah Nil */

/* Semua elemen diperiksa dengan instruksi yang sama */

{ /* KAMUS LOKAL */

address P;

/* ALGORITMA */

/* List linier L sudah terdefinisi dan siap dikonsultasi */

*P = First(L);

*Found = false;

while ((P* != Nil) && !(*Found)) { if (Kondisi(*P)) {

*Found = true;

} else {

*P = Next(*P);

} /* P = Nil or Found */

/* Jika Found maka P adalah elemen list dengan Kondisi(P) true */

}

Referensi

Dokumen terkait

Pembangunan Rumah Oleh Perum Perumnas Provinsi Jawa Barat Tahun 2011. No Nama

[r]

Hari peringatan AIDS seduniaini juga menjadi kesempatan untuk memikirkan kembali penyebaran serta informasi terkait kondisi penyakit maut ini serta mengkaji kemajuan upaya

Persentase Siswa Mencapai KKM 56,25% 75% 87,5% Dari tabel di atas dapat disimpulkan bahwa prestasi belajar bahasa Inggris materi membaca teks report dengan

Dalam kasus yang peneliti angkat, terdapat banyak pelajar yang belum memiliki SIM tetapi sudah mengendarai kendaraan bermotor ke sekolah sendiri. Apa yang

2 Mampu menyelidiki dan memberikan kesimpulan yang valid atas permasalahan yang kompleks pada sistem terintegrasi pada industri jasa atau manufaktur menggunakan

bahwa pengaturan tempat usaha yang ditetapkan berdasarkan Peraturan Daerah Kotamadya Daerah Tingkat II Palembang Nomor 3 Tahun 1995 tentang Pemberian Izin Tempat Usaha dan

Sungai Lueng Putu yang melintasi pemukiman penduduk di Kecamatan Bandar Baru dan bermuara di garis pantai Kecamatan Bandar Baru Kabupaten Pidie Jaya.. Sumber : BPBD Kabupaten