PERTEMUAN 3 SINGLE LINKED LIST (Non Circular).

Slides:



Advertisements
Presentasi serupa
Antrian (Queue) Desain dan Analisis Algoritma
Advertisements

Double Linked List.
Single linked list.
STRUKTUR DATA (7) single linked list circular
STRUKTUR DATA (8.1) double linked list non circular
LINKED LIST.
LINKED LIST.
CARA MEMBUAT SINGLE LINKED LIST DENGAN BORLAND C++
Senarai Berantai Adalah salah satu struktur data dinamis yang paling sederhana (linked list) atau juga disebut senarai satu arah ( one way list).
Pertemuan 2 STRUKTUR DATA LINKED LIST
Pertemuan 3 RECORD.
LINKED LIST (List linier)
Mata Kuliah : Struktur Data Pertemuan : V
LINKED LIST Single Linked List.
LINKED LIST.
Linked List Pembuatan Simpul Awal.
LINK LIST Latifah Rifani.
Algoritma dan Struktur Data Daniel Riano Kaparang.
Struktur Data Departemen Ilmu Komputer FMIPA-IPB 2010
SENARAI BERANTAI TUNGGAL
Queue.
Quiz struktur data Genap 2013.
Algoritma & Struktur Data Pointer Evangs Mailoa.
SINGLE LINKED LIST (Lanjutan) Pertemuan 4 IMAM SIBRO MALISI
STRUKTUR DATA (6) single linked list non circular
Algoritma & Struktur Data Linked List Evangs Mailoa.
LINKED LIST by Yohana N.
Struktur Data List Linear : Linked List (Double Linkedlist)
Algorithm and Data Structures.
Pertemuan ketujuh Struktur data st3telkom.ac.id
Struktur Data List Linear : Linked List (Single Linkedlist)
POINTER.
LINKED LIST.
Struktur Data (Data Structure) – IS 2313
1 Pertemuan 3 Data Komposit Linked list Matakuliah: T0026/Struktur Data Tahun: 2005 Versi: 1/1.
Algoritma dan Struktur Data
LINK LIST “Suatu cara menyimpan data dengan terstruktur sehingga programmer dapat secara otomatis menciptakan suatu tempat baru didalam memori komputer.
SENARAI BERANTAI TUNGGAL
Double linked list non circular
Struktur Data Linked List
STRUKTUR DATA (2) Single Linked List
STRUKTUR DATA Linked List Oleh : Yuli Praptomo PHS, S.Kom.
STRUKTUR DATA Linked List
Pemrograman Terstruktur
8. Singly Linear Linked List
Single Linked List.
STRUKTUR DATA QUIZ.
Algoritma dan Struktur Data
Linked List Oleh: Tim Struktur Data IF - UNIKOM.
MATAKULIAH : STRUKTUR DATA
Linked List Oleh: Tim Struktur Data IF - UNIKOM.
Doubel Linked List.
Algoritma dan Struktur Data
Linked List Oleh: Tim Struktur Data IF - UNIKOM.
Algoritme dan Stuktur Data
Algoritma dan Struktur Data
STRUKTUR DATA (7) single linked list circular
Linked List 6.3 & 7.3 NESTED LOOP.
Algoritma dan Struktur Data
Linked List Oleh: Tim Struktur Data IF - UNIKOM.
Doubel Linked List.
Algoritma dan Struktur Data
Single Linked List Circular (SLLC)
QUEUE (ANTRIAN) Queue atau antrian didefinisikan sebagai kumpulan dari obyek-obyek yang homogen dengan operasi penambahan elemen (Enqueue) dan pengambilan.
STRUKTUR DATA (8.2) double linked list circular
Double Linked List.
LINKED LIST (SENARAI BERANTAI)
LINKED LIST MELINGKAR Linked List melingkar (circular) adalah linked list linier biasa dimana pointer pada node terakhir diarahkan kembali ke node pertama.
Variable Static & Linked List
SINGLE LINKED LIST (SLL)
Transcript presentasi:

PERTEMUAN 3 SINGLE LINKED LIST (Non Circular)

KONSEP POINTER DAN LINKED LIST Untuk mengolah data yang banyaknya tidak bisa ditentukan sebelumnya, maka disediakan satu fasilitas yang memungkinan untuk menggunakan suatu perubah yang disebut dengan perubah dinamis (Dinamic variable) Perubah Dinamis (Dinamic variable) Suatu perubah yang akan dialokasikan hanya pada saat diperlukan, yaitu setelah program dieksekusi.

Perbedaan Perubah Statis & Dinamis Pada perubah statis, isi Memory pada lokasi tertentu (nilai perubah) adalah data sesungguhnya yang akan diolah. Pada perubah dinamis, nilai perubah adalah alamat lokasi lain yang menyimpan data sesungguhnya. Dengan demikian data yang sesungguhnya dapat dimasukkan secara langsung. Dalam hal cara pemasukkan data dapat diilustrasikan seperti dibawah ini. 1000 10 1000

Type Data *Nama Variabel; DEKLARASI POINTER Pointer digunakan sebagai penunjuk ke suatu alamat memori Dalam pemrograman C++, Type Data Pointer dideklarasikan dengan bentuk umum : Type Data *Nama Variabel; Type Data dapat berupa sembarang type data, misalnya char, int atau float. Sedangkan Nama veriabel merupakan nama variabel pointer

Contoh penggunaan pointer dalam program C++: Void main() { int x,y,*z; x = 75; //nilai x = 75 y = x; //nilai y diambil dari nilai x z = &x; //nilai z menunjuk kealamat pointer dari nilai x getch(); }

LINKED LIST (LINKED LIST) Salah satu Struktur Data Dinamis yang paling sederhana adalah Linked List atau Struktur Berkait atau Senarai Berantai, yaitu suatu kumpulan komponen yang disusun secara berurutan dengan bantuan Pointer. Linked List (Senarai Berantai) disebut juga dengan Senarai Satu Arah (One-Way List). Masing-masing komponen dinamakan dengan Simpul (Node). A 50 B

Perbedaan Karakteristik Array dan Linked List ARRY LINKED LIST Stati Dinamis Penamdahan / penghapusan data terbatas Tidak terbatas Random access Sequential access Pengapusan array tidak mungkin Pengapusan linked list muda

Setiap simpul dalam suatu Linked List terbagi menjadi dua bagian,yaitu : 1. Medan Informasi Berisi informasi yang akan disimpan dan diolah. 2. Medan Penyambung (Link Field) Berisi alamat berikutnya. Bernilai 0, Jika Link tersebut tidak menunjuk ke Data (Simpul) lainnya. Penunjuk ini disebut Penunjuk Nol.

Linked List jug mengandung sebuah variabel penunjuk List, yang bisanya diberi nama START (awal) yang berisi alamat dari simpul pertama dalam list Awal . A B C D E Medan Penyambung dari symbol kedua Medan Infomasi dari symbol kedua

PENYAJIAN LINKED LIST DALAM MEMORY INFO SAMBUNGAN 1 2 3 AWAL 4 2 5 6 7 8 9 10 C 5 A 6 D 10 B 1 F E 8

Keterangan AWAL = 2 , maka INFO[2] =A SAMBUNGAN = 6 , maka INFO[6] =B SAMBUNGAN = 1 , maka INFO[1] =C SAMBUNGAN = 5 , maka INFO[5] =D SAMBUNGAN = 10 , maka INFO[10] =E SAMBUNGAN = 8 , maka INFO[8] =F SAMBUNGAN = 0 , Maka Akhir Linked List Dari contoh diatas diperloleh untuki‘ABCDEF’

Bentuk Node Single Linked List non Circular • Single : field pointer-nya hanya satu dan satu arah,pada akhir node pointernya menunjuk NULL M enempati alamat m emori tertentu • Linked List : node-node tersebut saling terhubung satu sama lain. data pointer

• Setiap node pada linked list mempunyai field yang berisi pointer ke node berikutnya, dan juga memiliki field yang berisi data. • Node terakhir akan menunjuk ke NULL yang akan digunakan sebagai kondisi berhenti pada saat pembacaan isi linked list. FFF1 FFF2 FFF3 FFF4 A B C D null

Pembuatan Single Linked List non Circular Deklarasi Node : typedef struct TNode{ int data; TNode *next; }; Keterangan: • Pembuatan struct bernama TNode yang berisi 2 field, yaitu field data bertipe integer dan field next yang bertipe pointer dari TNode

•Setelah pembuatan struct, buat variabel head yang bertipe pointer dari TNode yang berguna sebagai kepala linked list. • Digunakan perintah new untuk mempersiapkan sebuah node baru berserta alokasi memorinya, kemudian node tersebut diisi data dan pointer nextnya ditunjuk ke NULL. TNode *baru; baru = new TNode; baru->data = databaru; baru->next = NULL;

Single Linked List non Circular Menggunakan Head • Dibutuhkan satu buah variabel pointer : head yang akan selalu menunjuk pada node pertama A B C D null FFF1 FFF2 FFF3 FFF4

Deklarasi Pointer Penunjuk Head Single Linked List • Manipulasi linked list tidak dapat dilakukan langsung ke node yang dituju, melainkan harus menggunakan suatu pointer penunjuk ke node pertama (Head) dalam linked list • Deklarasinya sebagai berikut: TNode *head;

Fungsi Inisialisasi Single Linked List v oi d i ni t ( ) head { NULL he ad = NU LL ; } Function untuk mengetahui kondisi Single Linked List • Jika pointer head tidak menunjuk pada suatu node maka kosong in t isE m pt y( ) { i f (h ea d == NU LL ) r et ur n 1; e lse r et ur n 0;

Menambah Node di Depan • Penambahan node baru akan dikaitan di node paling depan, namun pada saat pertama kali (data masih kosong), maka penambahan data dilakukan dengan cara: node head ditunjukkan ke node baru tersebut. • Prinsipnya adalah mengkaitkan node baru dengan head, kemudian head akan menunjuk pada data baru tersebut sehingga head akan tetap selalu menjadi data terdepan.

v oid i ns e rtD e pa n( i nt da t a ba ru) { TN ode v oid i ns e rtD e pa n( i nt da t a ba ru) { TN ode * ba ru; ba ru = ne w TN ode ; ba ru- >da t a = da t a ba ru; ba ru- >ne x t = N UL L; if ( is Em pt y ( ) ==1 ) he a d=b aru ; he a d- >ne x t = N U LL; } el s e ba ru- >ne x t = he a d; he a d = ba ru ; prin tf ( ” Da t a m a s uk \ n”) ;

1. List masih kosong (head=NULL) NULL Head 2 1. List masih kosong (head=NULL) NULL Head 2. Masuk data baru, misalny 5 head baru 5

3. Datang data baru, misalya 20 (penemahan di depan) 5 20 5 20 5

Menambah Node di Belakang • Penambahan data dilakukan di belakang, namun pada saat pertama kali, node langsung ditunjuk oleh head. • Penambahan di belakang membutuhkan pointer bantuuntuk mengetahui node terbelakang. Kemudian, dikaitkan dengan node baru. • Untuk mengetahui data terbelakang perlu digunakan perulangan.

vo id ha pu sDep an () { TN od e vo id ha pu sDep an () { TN od e *h apu s; in t d; if ( i sE mp t y( ) == 0) { i f ( hea d- > nex t ! = NU LL ) { h apu s = h ead ; d = h ap us - >d at a; h ead = hea d- >n ex t; d el et e hap u s; } e lse { d = h ead - >d at a; h ead = NUL L; } p ri n t f( “ %d t erh ap us\ n “ ,d ) ; } el se co ut < <" M asi h ko so ng \ n" ;

A B C D E

Menghapus Node di Belakang • Membutuhkan pointer bantu dan hapus. Pointer hapus digunakan untuk menunjuk node yang akan dihapus, pointer bantu untuk menunjuk node sebelum node yang dihapus yang akan menjadi node terakhir. • Pointer bantu digunakan untuk menunjuk ke nilai NULL. Pointer bantu selalu bergerak sampai sebelum node yang akan dihapus, kemudian pointer hapus diletakkan setelah pointer bantu. Selanjutnya pointer hapus akan dihapus, pointer bantu akan menunjuk ke NULL.

v oi d h ap us B el a k a ng( ) { TN ode. ha pus , v oi d h ap us B el a k a ng( ) { TN ode *ha pus , *ba nt u; in t d; if (i s Em pt y ( )= =0 ){ i f (h ea d ->n e xt != N U LL) { ba nt u = h e ad ; whi le ( ba nt u- >n ex t - >ne x t != NU LL ) { ba nt u = b an tu - >ne x t; } ha pu s = ba nt u- >ne x t ; d = h ap us - >da t a; ba n tu ->n e xt = N U LL; de l et e ha pus ; } e ls e { d = h ea d ->d a ta ; he a d = N U LL; p rint f ( “% d te rh ap us \n “, d) ; } e l s e pri nt f (“ Ma s i h k o so ng\ n“) ;

A B C D A B C D C A B D A B C

Function untuk menghapus semua elemen Linked List vo id cl ear( ) { T Nod e *b an t u, *h ap us; b ant u = hea d; w hi l e( ba nt u != NUL L ) h apu s = b ant u ; b ant u = ba nt u - >n ext ; d el et e hap u s; } h ead = N ULL ;

Menampilkan / Membaca Isi Linked List • Linked list ditelusuri satu-persatu dari awal sampai akhir node. Penelusuran dilakukan dengan menggunakan pointer bantu, karena pointer head yang menjadi tanda awal list tidak boleh berubah/berganti posisi. • Penelusuran dilakukan terus sampai ditemukan node terakhir yang menunjuk ke nilai NULL. Jika tidak NULL, maka node bantu akan berpindah ke node selanjutnya dan membaca isi datanya dengan menggunakan field next sehingga dapat saling berkait. • Jika head masih NULL berarti data masih kosong!

v o id t am pi l( ) { TN ode *b a nt u; ba nt u = he a d; if ( is Em pt y ( ) ==0 ) { whi le ( ba nt u! =N U LL) { c out <<ba n tu ->d a ta <<" " ; ba nt u=b an tu - >ne x t; } prin tf ( “ \n” ) ; } e ls e prin tf ( “ Ma s ih k os on g\n “) ; A B C D

1. Perubah yang akan dialokasikan hanya pada saat setelah program dieksekusi, disebut : a. Static variable c. Array b. Dinamic variable d. Linked list 2. Diketahui suatu deklarasi variabel int x,y,*z; variabel yang merupakan penunjuk ke pointer adalah : a. x c. z b. y d. x, y dan z 3. Suatu kumpulan komponen yang disusun secara berurutan dengan bantuan Pointer, disebut ….. a. Array c. Node/simpul b. Pointer d. Linked list

4. Gambar diatas menunjukkan bentuk penambahan node pada posisi : a 4. Gambar diatas menunjukkan bentuk penambahan node pada posisi : a. Belakang c. Tengah b. Depan d. Depan dan Belakang 5. Perintah yang tepat untuk mempersiapkan sebuah node baru berserta alokasi memorinya, adalah …. a. Create c. New b. Null d. Insert 5 20

SEKIAN Jika tuan mudik ke hulu Carikan saya bunga kemboja. Jika tuan mati dahulu Nantikan saya di pintu surga.