LINKED LIST. TUJUAN UMUM Memahami konsep linked list TUJUAN KHUSUS

dokumen-dokumen yang mirip
Senarai berantai. linked list. Pertemuan keenam Struktur data st3telkom.ac.id. by : tenia wahyuningrum & Sisilia Thya Safitri

MODUL 6 SINGLE & DOUBLE LINKED LIST

ALGORITMA DAN STRUKTUR DATA

Pointer. ted = &andy;

DOUBLE LINKED LIST. Danang Wahyu Utomo Danang Wahyu Utomo, M.Kom, M.CS

Algoritma Pemrograman & Struktur Data

Lecture Notes On Algorithms and Data Structures. Oleh Thompson Susabda Ngoen

Praktikum Algoritma dan Struktur Data

Algoritma dan Struktur Data. Pertemuan 7 Linked List

Data structure :Metode LINK LIST. Kusnawi, S.Kom, M.Eng STMIK AMIKOM Yogyakarta

Linked List dan Implementasinya dalam Bahasa Java

Algoritma dan Struktur Data. Pertemuan 9 Circular Linked List

05. Double Linked List

KONSEP POINTER DAN LINKED LIST

List Linear (Linked List) Farah Zakiyah Rahmanti 2014

Algoritma dan Struktur Data

: Mahasiswa mampu menjelaskan teknik pemrograman menggunakan Linked List. Single Linked List

LIST. Dewi Sartika, M.Kom

Kode : IF2121 NIM :... Matakuliah : Algoritma dan Struktur Data Nama :... Hari, Tanggal : Senin, 13 November 2017 Waktu : 150 Menit

STL DLL STRUKTUR DATA. JULIO ADISANTOSO Departemen Ilmu Komputer IPB. Pertemuan 3 : 29 Juni 2015

Algoritma dan Struktur Data. Pertemuan 8 Doubly Linked List

Masukan Judul... Infotype àsebuah tipe terdefinisi yang menyimpan informasi sebuah elemen list

STL DLL STRUKTUR DATA. JULIO ADISANTOSO Departemen Ilmu Komputer IPB. Pertemuan 3 : 27 Juni 2016

KONSEP POINTER DAN LINKED LIST

KONSEP POINTER DAN LINKED LIST

Algoritma dan Struktur Data. Ramos Somya, S.Kom., M.Cs.

STRUKTUR DATA (2) Single Linked List

KONSEP POINTER DAN LINKED LIST

Algoritma dan Struktur Data. Linked List

Algoritma dan Struktur Data. Ramos Somya

Pertemuan 3. Perubah Dinamis (Dinamic variable) Suatu perubah yang akan dialokasikan hanya pada saat diperlukan, yaitu setelah program dieksekusi.

Pertemuan 7. REVIEW dan QUIS

PENGENALAN List merupakan sebuah pemikiran/konsep struktur data yang sangat dasar pada pemrograman agar lebih fleksibel. Setiap elemen akan ditambahka

//membuat sebuah tipe data baru yang terdiri dari. //field data bertipe integer //field next merupakan pointer dari list

SENARAI BERANTAI (LINK LIST)

BAB II Senarai Berantai (Linked List)

SINGLE LINKED LIST NON CIRCULAR (SENARAI BERANTAI TUNGGAL TIDAK BERPUTAR)

DIG1G3 Implementasi Struktur Data

Manage Sort STRUKTUR DATA. JULIO ADISANTOSO Departemen Ilmu Komputer IPB. Pertemuan 4 : 30 Juni 2015

SINGLE LINKED LIST (NON CIRCULAR)

Modul Praktikum Algoritma dan Struktur Data BAB 6 LINKED LIST

DOUBLY LINKED LIST PROGRAM : DOUBLY LINKED LIST (TAMBAH SIMPUL DI BELAKANG)

KONSEP POINTER DAN LINKED LIST

Struktur Data II. Single Linked List - Non circular

04. Single Linked List

pada program di atas, akan ditampilkan alamat memori dari variabel x, bukan nilai x.

ARRAY PENGANTAR PROGRAM STUDI. Institut Teknologi Sumatera

Lab. Teknik Informatika Struktur Data 1

Tutorial - Single Linked List

LAPORAN PRAKTIKUM IX. Oleh:

Pertemuan 4. Single Linked List non Circular Menggunakan Head dan Tail

Variasi List Linier. Nisa ul Hafidhoh, MT

REPRESENTASI FISIK LIST LINEAR

PENGANTAR KOMPUTER & SOFTWARE II

1. Traversing Untuk algoritma traversing sama seperti pada single Link List

Algoritma Pemrograman & Struktur Data

Single Linked List (1)

Tugas Studi Kasus. Linked List SLLNC dengan Head & Tail

LAPORAN PRAKTIKUM RESMI QUEUE

Algoritma dan Struktur Data Praktikum 3. Pointer

INF-103 Pemrograman II VECTOR & STRING. Dr. Taufik Fuadi Abidin, M.Tech Irvanizam Zamanhuri, M.Sc. Program Studi Informatika FMIPA UNIVERSITAS KUALA

PERTEMUAN VI POINTER 6.1 Tujuan Praktikum 6.2 Teori Penunjang Pointer

LIST BERKAIT(LINKED LIST)

REVIEW ARRAY. Institut Teknologi Sumatera

PERTEMUAN KE 11. Linked List. Apa Itu Linked List?

PRAKTIKUM ALGORITMA DAN STRUKTUR DATA DOUBLE LINKED LIST CIRCULAR

List Berkait(Linked List) Overview. Tujuan Instruksional

STRUKTUR DATA single linked list non circular

BAB IX LINKED LIST (SENARAI BERANTAI)

Array dan Vector Linked List STRUKTUR DATA. JULIO ADISANTOSO Departemen Ilmu Komputer IPB. Pertemuan 2 : 23 Juni 2015

Queue Priority Queue STRUKTUR DATA. JULIO ADISANTOSO Departemen Ilmu Komputer IPB. Pertemuan 6 : 7 Juli 2015

By : Agus Priyanto, M.Kom ST3 Telkom Purwokerto Structure and Pointer

Spesifikasi: Ukuran: 14x21 cm Tebal: 225 hlm Harga: Rp Terbit pertama: Februari 2005 Sinopsis singkat:

Review : Sifat Implementasi Linear List dengan Array

ALGORITMA DAN STRUKTUR DATA POINTER DAN FUNCTION

MODUL PRAKTIKUM STRUKTUR DATA

Algoritma dan Struktur Data. Pertemuan 5 Pointer

BAB X. Struct Dalam C++, kita dapat membuat sebuah tipe data baru. Maka penulisan variabel baru kita akan menjadi:

Pointer. Pengertian. Struktur Data Pascal

Gambar 1. Single Linked List

PRAKTIKUM STRUKTUR DATA QUEUE. SULIDAR FITRI, M.Sc

SUB PROGRAM P E N G A N TA R P R O G R A M S T U D I. Institut Teknologi Sumatera

Double linked list. Gambar 1. Double linket list dengan empat simpul Deklarasi Double Linked List di dalam Pascal :

Variasi List Linier (Bagian 2)

Function. Function adalah satu blok instruksi yang dieksekusi ketika dipanggil dari bagian lain dalam suatu program. Format dari function :

Array VS Linked List

BAB VIII QUEUE (ANTRIAN)

BAB III POINTER. Type *variabel-name

E STRUKTUR DATA & E PRAKTIK STRUKTUR DATA. Pointer & Function. Alfa Faridh Suni, S.T., M.T. PTIK

PENGANTAR KOMPUTER & SOFTWARE II. Array (Part II) Tim Pengajar KU Institut Teknologi Sumatera

Linked List 6.3 & 7.3 NESTED LOOP

Kurikulum Qt. Chapter 5 Pointer dan References. Agenda. Apa itu Pointer? Memory Komputer. Mengambil Alamat Memory dari Variabel

A. TUJUAN PEMBELAJARAN

Contoh function 1 : Output : // function example The result is 8 #include <iostream.h>

Praktikum Algoritma dan Struktur Data 2010

ALUR PROGRAM. SELEKSI KONDISI Statement If a. Bentuk If tunggal sederhana Sintaks : if ( kondisi ) statement ;

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA LINKED LIST (BAGIAN 1)

Stack STRUKTUR DATA. JULIO ADISANTOSO Departemen Ilmu Komputer IPB. Pertemuan 5 : 6 Juli 2015

Pertemuan Function. Obyektif Praktikum : 1. Mengerti konsep dasar penggunaan Function

Algoritma dan Pemrograman Lanjut. Pertemuan Ke-11 Pointer 2

Transkripsi:

LINKED LIST TUJUAN UMUM Memahami konsep linked list TUJUAN KHUSUS Mempelajari prasarat linked list, pointer, sruct to pointer Linked list Insert, delete

LINKED LIST Variabel bertipe data pointer adalah variabel yang isinya alamat (address) dari variabel lainnya Contoh: int a, b; /* a dan b adalah variabel integer*/ int *pa, *pb; /* pa dan pb adalah variabel pointer*/ Saat ini isi dari pa dan pb belum ditentukan, dengan assigment berikut: pa = &a; pb = &b; Maka pa berisi alamat a dan pb berisi alamat b Bial alamat a = 400 dan b = 402, maka pa berisi 400 dan pb berisi 402 400 a 400 pa 402 b 402 pb Variabel a dan b dapa diisi secara tidak langsung (onderct assigment) memalui pa dan pb yaitu dengan : *pa = 30; *pb = 20 400 30 a 400 pa 402 20 b 402 pb

Lebih Jauh tentang Pointer Reference operator (&) int A; P = &A; P merupakan alamat dari variabel A andy = 25; fred = andy ted = &andy; Pertama kita memberikan nilai 25 pada variabel andy, dimana setiap variabel yang dideklarasikan selalu mempunyai alamat di memori dalam hal ini dimisalkan 1776 Kedua mengkopi isi dari variabel andy ke fred Ketiga mengkopi ke ted reference atau alamat dari variabel andy Dereference operator (*) Pointer dapat digunakan untuk mengisi nilai dari variabel yang ditunjuk *ted = 75 & is the reference operator and can be read as "address of" * is the dereference operator and can be read as "value pointed by"

Variabel pointer dapat dibuat atau diciptakan secara dinamis, yaitu mengalokasikan suatu tempat di memori ketika program sedang berjalan Dengan kemampuan seperti ini maka penggunaan variabel pointer tidak hanya sekedar indirect assigment seperti contoh di atas, melainkan dapat membuat suatu struktur data di mana banyak atau kurang sesuai dengan kebutukan Struktur tersebut di antaranya adalah Linked List Struktur Linked List Setiap elemen terdiri dari data dan pointer, bagian data akan berisi informasi, bagian pointer akan berisi alamat yang akan mengaitkan satu elemen dengan elemen lainnya DATA POINTER Elemen Oleh karena itu diperlukan deklarasi untuk pointer: Head, Current dan Struct node *Head, *, * Current; - Pointer Head selalu menunjuk ke node awal - Pointer selalu menunjuk ke node akhir - Pointer Current dapat bergerak dari node awal hingga node akhir

Pointer Current bergerak sesuai dengan arah anak panah Node yang sedang ditunjuk oleh current disebut node aktif Linked list dapat dibangun dengan cara: 1 Insert depan, node baru selalu berada di depan 2 Insert belakang, node baru selalu berada di belakang 3 Insert setelah posissi current pointer

// my first pointer #include <iostream> using namespace std; int main () int firstvalue, secondvalue; int * mypointer; mypointer = &firstvalue; *mypointer = 10; mypointer = &secondvalue; *mypointer = 20; cout<<"firstvalue is "<<firstvalue<<endl; cout<< "secondvalue is "<<secondvalue<< endl; return 0; // more pointers #include <iostream> using namespace std; int main () int firstvalue = 5, secondvalue = 15; int *p1, *p2; p1=&firstvalue; p2=&secondvalue; *p1= 10; *p2= *p1; p1 = p2; *p1 = 20; cout<<"firstvalue is"<<firstvalue<< endl; cout<<"secondvalue endl; return 0; is"<<secondvalue<<

// more pointers #include <iostream> using namespace std; int main () int numbers[5]; int * p; p = numbers; *p = 10; p++; *p = 20; p = &numbers[2]; *p = 30; p = numbers + 3; *p = 40; p = numbers; *(p+4) = 50; for (int n=0; n<5; n++) cout << numbers[n] << ", "; return 0; // pointer to functions #include <iostream> using namespace std; int addition (int a, int b) return (a+b); int subtraction (int a, int b) return (a-b); int (*minus)(int,int) = subtraction; int operation (int x, int y, int (*functocall)(int,int)) int g; g = (*functocall)(x,y); return (g); int main () int m,n; m = operation (7, 5, addition); n = operation (20, m, minus); cout <<n; return 0;

INSERT DEPAN struct node char data; struct node *next; ; struct node *head, *current, *tail; void create( ) head = current = NULL; void insert_depan(char data) Struct node *p;/*temporary node*/ p=(struct node*)malloc(sizeof(struct node)); p->data = data; p->next = head; head = current = p; void main( ) char c; create( ); do cout << Input Data (AZ): ; cin >> c; insert_depan(c); while(c!= ); )

Proses Insert Depan Create( ); HEAD CURR NULL NULL Insert( A ); p =(stuct node*)malloc(sizeof(struct node)); P p->data=data; p->next=head; P A P A NULL head= current=p; HEAD CURR P A NULL Insert( B ); p =(stuct node*)malloc(sizeof(struct node)); P p->data=data P B

p->next=head; head = current = p HEAD CURR P B A HEAD CURR P B A NULL NULL

INSERT BELAKANG struct node char data; struct node *next; ; struct node *head, *current, *tail; void create( ) head = current = tail = NULL; void insert_belakang(char data) Struct node *p;/*temporary node*/ p=(struct node*)malloc(sizeof(struct node)); p->data = data; p->next = NULL; if (head == NULL) head = current= tail = p; else tail->next = p; tail = p;; head = current = p; void main( ) char c; create( ); do cout << Input Data (AZ): ; cin >> c; insert_belakang(c); while(c!= );

Proses Insert Belakang Insert( A ); p =(stuct node*)malloc(sizeof(struct node)); P p->data=data; p->next=null; P A P A NULL if (head == NULL) head = current = tail = p; else tail->next = p;tail = p;; HEAD CURR P A NULL Insert( B ); p =(stuct node*)malloc(sizeof(struct node)); P p->data=data; p->next=null; P B P B NULL

if (head == NULL) head = current = tail = p; else tail->next = p;tail = p;; HEAD CURR P HEAD CURR P A B NULL A B NULL

Operasi pada Linked List 1 Create( ) Menciptakakn linked list baru dalam keadaan kosong 2 Insert(elemen_type e) Menambahkan satu elemen ke dalama linked list di bagian depan *) 3 Empty( ) Memeriksa apakah linked list dalam keadaan kosong 4 Retrieve(elemen_type *e) Membaca informasi dari node yang sedang ditunjuk oleh current pointer ke variabel e 5 Update(elemen_type e) Mengubah informasi dari node yang sedang ditunjuk oleh currentpointer dengan data dari variabel e 6 Find_First( ) Memindahkan current pointer node awal 7 Find Next(fail) Memindahkan current pointer node berikutnya, bila node berikutnya adalah node terakhi, maka operasi ini tidak berfungsi 8 Delete( ) Menghapus node yang ditunjuk oleh current pointer, kemudian current pointer direset ke posisi awal 9 Clear( ) Menghapus seluruh node

Implementasi operasi Delete void delete() struct node *p; if (current == head) head =head ->next; else p=head; while (p->next!=current) p=p->next; p=->current->next; ; Free(current); Current = head;

PROSES DELETE 1 Posisi Current = Head HEAD CURR A B C D E NULL head = head->next; CURR HEAD A B C D E NULL free(current); CURR HEAD B C D E NULL current = head; HEAD CURR B C D E NULL

2 Posisi Current Head HEAD CURR A B C D E NULL p =head; while (p->next!= current) p = p->next; HEAD P P P CURR A B C D E NULL p ->next = current->next; HEAD P CURR A B C D E NULL free(current); HEAD P CURR A B C E NULL

current = head; HEAD CURR A B C E NULL Latihan: 1 Buat modul untuk melakukan operasi: Insert (after current), Find_First, Find_Next, Update, Retrieve, Delete, Empty, dan Clear

Empty void empty() if (head = NULL) ;return 0; return (1); Find First Void findfirst() current = head; Find Next void findnext() if (current->next!=null) current = current->next; Retrieve void retrieve(e) e = current->isi; Update void update(e) current->isi = e; Delete Current void delete() int *x; if (current!= head) x = head; while (x->next!= current) x= x->next; x->next =curent->next; else head = head->next; free(current); current = head;

Clear void clear(); while (head!=null) current = head; head = head ->next; free(current);

Double Linked List Struktur double linked list mempunyai bentuk umum: Head Current Next NULL Data NULL Prev Deklarasi untuk Node: struct node int data; struct node *next; struct node *prev; ; Double linked list dapat dibangun dengan 2 cara: 1 Insert Before; node baru berada sebelum posisi current pointer 2 Insert After; node baru berada setelah posisi current pointer

Implementasi Circular Double Linked list struct node int data; struct node *next; struct node *prev; ; struct node *head, *current; int n; /*jumlah node*/ void create( ) head = current = NULL; n=0; void insert_after(int data) struct node *p; /*temporary node*/ p =(struct node*)malloc(sizeof(struct node)); p->data=data; if(head==null) head = p; p->next = p; p->prev=p; else current->next->prev = p; p->next =current->next; p->prev=current; current->next=p; current=p; n++;

void insert_before(int data) if head == NULL) current =current->prev; insert_after(data); if (current->next == head) head = current; void delete( ) struct node *p; p=current; current->prev->next=current->next; current->next->prev=current->prev; current=current->next; if (n==1) head= NULL; elseif (head=p) head=current; n--;free(p); void find_next( ); current=current->next; void find_prev( ) current=current->prev;