Linked List.

Slides:



Advertisements
Presentasi serupa
8. FILE.
Advertisements

Single linked list.
STRUKTUR DATA (7) single linked list circular
STRUKTUR DATA (8.1) double linked list non circular
STRUKTUR DATA (5) Pointer dan Function
bentuknya, yang dapat berubah pada saat runtime.
Pertemuan 2 STRUKTUR DATA LINKED LIST
Modular Programming Slamet Kurniawan, S.Kom.
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
INSTRUKSI MASUKAN DAN KELUARAN
Situasi Saat Program Berjalan (Run-time Environment)
FUNCTION / FUNGSI.
Review-Dasar Pemrograman Komputer
STRUKTUR DATA (6) single linked list non circular
STRUKTUR DATA (5) Pointer dan Function
File Data Pertemuan ke 13..
Alokasi Memori Yuliana Setiowati.
BY YOHANA N Sumber Kepustakaan : yohananugraheni.files.wordpress.com/.../linked- lis... 1 LINKED LIST.
PL/SQL PROGRAMMING PL/SQL adalah prosedur berkelanjutan dari Oracle -SQL yang menawarkan satu bentuk bahasa pemrograman. PL/SQL memungkinkan user atau.
Algoritma & Struktur Data Linked List Evangs Mailoa.
LINKED LIST by Yohana N.
Struktur Data List Linear : Linked List (Double Linkedlist)
STRUKTUR DATA Pointer dan Function
Algorithm and Data Structures.
Algoritma dan Struktur Data
Algoritma dan Struktur Data
Pertemuan ketujuh Struktur data st3telkom.ac.id
Fungsi Fungsi (Sub Program) :
Struktur Data List Linear : Linked List (Single Linkedlist)
LINKED LIST.
1 Pertemuan Fungsi Matakuliah: T0016 / Algoritma dan Pemrograman Tahun: 2007 Versi: 6.
1. Pada akhir pertemuan ini, diharapkan mahasiswa akan mampu :  Mendemonstrasikan penggunaan fungsi serta pengiriman parameter 2.
Struktur Data (Data Structure) – IS 2313
VALUE ORGANIZATION Konsep File QUALITY TEAMWORK.
Matakuliah : T0016 / Algoritma dan Pemrograman Tahun : 2007 Versi : 6
Fungsi dan Prosedur.
Algoritma dan Struktur Data
1 Pertemuan 3 Data Komposit Linked list Matakuliah: T0026/Struktur Data Tahun: 2005 Versi: 1/1.
Algoritma dan Struktur Data
Pertemuan Linked list jual [Valdo] Lunatik Chubby Stylus.
FUNGSI.
SENARAI BERANTAI TUNGGAL
Struktur Data Linked List
STRUKTUR DATA (2) Single Linked List
PROCEDURE & FUNCTION.
Prosedur dan fungsi By Serdiwansyah N. A..
LINKED LIST by Yohana N.
Single Linked List.
Algoritma dan Struktur Data
MODULAR (FUNGSI)
TEAM 1 Cut Hayatul Wardani ( ) Saputri Phonna ( ) Azhary (140502)
Pertemuan 4 Modularitas
Castaka agus sugiato, M.Kom., M.CS
Algoritme dan Stuktur Data
Linked List 6.3 & 7.3 NESTED LOOP.
IT234 ALGORITMA DAN STRUKTUR DATA
MODULAR (FUNGSI)
LINKED LIST by Yohana N Sumber Kepustakaan : yohananugraheni.files.wordpress.com/.../linked-lis...
Linear Doubly Linked List
Variable Static & Linked List
Algoritma dan Struktur Data
PROCEDURE DAN FUNGSI.
Struktur Data Linear Created by Fifth Group, S3B TI Anggota
SINGLE LINKED LIST (SLL)
Transcript presentasi:

Linked List

Alokasi Memori Dinamis Berbagai jenis variabel yang berisi data, alamat, variabel tunggal, dan struktur data digunakan pada saat menulis program. Variabel-variabel tersebut dideklarasikan lalu akan dialokasikan pada memori komputer(segmen memori) ketika program dijalankan. Ketika tempat alokasi yang diperlukan pada memori melebihi kapasitas segmen memorinya maka akan timbul kesalahan pada saat compiling.

Ilustrasi Jika compiler yang digunakan modus pengalamatan 16 bit maka segmen memori berukuran 65 kilobyte (65535 byte). Jika terdapat deklarasi int nilai[40000]; akan menimbulkan kesalahan pada saat di-compile. Karna sebuah array dengan 40000 elemen memerlukan tempat 80000 byte pada segmen memori. ( integer size memori = 2 byte)

Alokasi dinamis disediakan penggunaannya oleh bahasa pemrograman. Heap memory merupakan tempat dikumpulkannya sisa(free) memori yang belum terpakai yang besarnya ditentukan oleh manajemen memori sistem operasi. Pendekatan alokasi dinamis, pada saat program dijalankan memori belum perlu dialokasikan seluruhnya, pada saat program meminta sejumlah memori,baru dialokasikan pada saat itu juga.

Fungsi Alokasi Dinamis pada C++ Menggunakan instruksi malloc() yang function prototype nya dideklarasikan di header file malloc.h Fungsi ini akan mengalokasikan blok memori sebesar size. Jika berhasil maka function mengembalikan address awal blok memori, jika gagal akan mengembailkan nilai NULL. Hasil alokasi di-typecast dan di-assign kepada variabel pointer. Mengakses dengan menggunakan operator  void *malloc(size_t size);

Linked List Linked List(Senarai Berkait) adalah struktur data yang terdiri atas node(simpul) yang dikaitkan secara linier dengan bantuan pointer. Linier karna satu simpul dikaitkan dengan satu simpul lainnya. Simpul menempati memori yang dialokasikan secara dinamis. Simpul berbentuk struct, satu atau beberapa field bertipe pointer berfungsi sebagai link(kait) ke simpul lainnya.

Deklarasi Algoritma Algoritma : <nama variabel list berkait/ pointer>: ^Data C/ C++: <tipe data>*<nama variable list berkait/ pointer> List berkait terdiri dari 2 komponen yaitu nilai/ info dari list dan alamat dari suatu nilai/ list berikutnya. Pointer adalah sebuah sel dalam suatu elemen yang berfungsi penunjuk letak elemen yang lain (nilai = alamat elemen yang lain).

Lanjutan …

Linked List: Insertion, Deleting Membuat record baru Next pointer di-set untuk mengaitkan item/ simpul baru Next pointer pada item/ simpul baru dimodifikasi untuk mengaitkan dengan simpul sesudahnya. Deletion: Next pointer dengan segera memutuskan dengan simpul yang dihapus, dan mengaitkannya kembali dengan simpul setelah item yang dihapus.

Linked List V.S Array Array Linked List Insert/ delete elemen pada akhir Mengakses elemen secara acak Pencarian daftar, khususnya nilai Linked List Insert elemen Delete elemen Diaplikasikan ketika sequential access dibutuhkan Dalam situasi dimana jumlah elemen tidak bisa diprediksikan sebelumnya

Types of Linked List Linear - Singly Linked List Merupakan senarai berkait yang masing-masing simpul pembentuknya mempunyai satu kait (link) ke simpul lainnya.

Circular Linked List Pointer elemen terakhir kembali ke head elemen pertama

3. Doubly Linked List Pointer ada diantara simpul yang berdekatan dikedua arah List dapat dilalui bolak-balik baik forward maupun backward Biasanya dua pointer yang di-maintain untuk keep-track list, head dan tail

Deklarasi Doubly Linked List

Operasi Dasar List Membuat list Traversing list Memasukan(insert) item/ elemen dalam list Menghapus elemen/item dalam list Menghubungkan dua atau lebih list (concatenating list)

List = Type Data Abstrak Abstract Data Type Data yang didefinisikan oleh user Biasanya lebih kompleks dari tipe data sederhana seperti int, float, char, etc. Kenapa Abstrak? Detail implementasi di sembunyikan Ketika melakukan operasi pada list (e.g. insert), maka fungsi yang di panggil. Rincian mengenai bagaimana list diimplementasikan atau bagaimana elemen di-insert atau di-delete dituliskan tidak diperlukan.

Deklarasi Tipe Simpul struct node_type { data_type var_name; struct node_type *link_name; } Catatan: node_type = nama tipe node. link_nama = link untuk mengaitkan node yang satu dengan yang lain. struct stud { int roll; char name[25]; int age; struct stud *next; } /* A user-defined data type called “node” */ Typedef struct stud node; node *head;

Deklarasi Pointer: Penunjuk Head Linked List Sebuah variabel bertipe pointer ke struct perlu dideklarasikan. Umumnya variabel ini diberi nama head Manipulasi harus melalui simpul pertama dalam list yang diacu oleh pointer head. Setelah terbentuk lalu diinisialisasikan ke alamat Null struct stud *head, *node, *curr; … head = null;

Pembentukan Simpul Baru Untuk memulai, maka perlu dibuat simpul pertama, dan menentukan head. Simpul yang dibentuk ditempatkan pada heap memory yang dialokasikan secara dinamis. Pada C/ C++ Diperlukan instruksi malloc() untuk melakukan alokasi memori. node_var =(struct node_type*) malloc(sizeof(struct node_type));

Lanjutan ….

Contoh Lain

Apabila ada sejumlah n simpul(node) pada awal(initial) list, maka: Alokasi n, satu per satu Membaca dalam field-field record Memodifikasi link dari record sehingga bisa saling terkait.

Pengaitan Simpul ke Linked List Melalui 3 cara: Dikaitkan pada posisi setelah simpul terakhir linked list Pada posisi terdepan linked list Disisipkan diantara simpul lainnya //Membentuk simpul pertama linked list if (head == NULL) head = node; //Mengaitkan simpul di akhir curr= head; while (curr -> next !=NULL) curr = curr -> next; Curr -> next = node; // Mengaitkan simpul di awal linked list node -> next= head; head = node;

Lanjutan … Permasalah yang muncul pada saat menyisipkan node sebelum node ditentukan; Node yang ditentukan berarti ada beberapa nilai yang diberikan pada simpul yang disebut juga key. Contoh roll Konvensi yang diikuti: Jika nilai roll yang diberikan sebagai ngetive, simpul akan disisipkan pada akhir list Ketika simpul ditambahkan pada awal list; Hanya satu next pointer yang dimodifikasi Head menjadi point pada simpul baru Point Simpul baru ke elemen sebelumnya

Simpul ditambahkan di akhir list Dua next pointer yang harus dimodifikasikan Simpul terakhir (point saat ini) ke simpul baru yang ditambahkan Pointer simpul baru NULL Simpul ditambahkan di tengah Dua next pointer yang dimodifikasi Node sebelumnya menjadi point ke simpul baru Point simpul baru ke next node

Aplikasi pada C++

Menambahkan Node pada Akhir

Traversing List Ketika list terbentuk dan ada head yang menjadi simpul pertama, maka: Mengikuti pointer selanjutnya Tampilkan konten-konten dari simpul yang dilalui Berhenti ketika next pointer NULL

Pencarian List

Delete Node Tiga kondisi yang mungkin muncul: Menghapus simpul pertama Menghapus simpul terakhir Menghapus penghubung simpul (simpul tengah)

LIFO Linked List Last-In-First-Out

FIFO Linked List First-In-First-Out

File & Stream Stream adalah kumpulan karakter yang disusun dalam baris-baris yang berpindah dari satu media ke media lain pada sistem komputer. Semua masukan dan keluaran berupa stream. Masing-masing stream berasosiasi dengan sebuah file. 3 buah stream: Standard Input stream Standard Output Stream Standard Error Stream FILE *ptvar; //Menyiapkan buffer area dan di-assign ke ptvar

TEXT File & BINARY File Text File adalah berkas yang disimpan dalam format teks. Format teks adalah format yang sama seperti tampilan di layar. Binary File menyimpan data numerik dalam format yang tetap sesuai ketentuan microprocessor.

Instruksi I/O File Data Dimulai dengan pengaktifan file tersebut melalui function fopen(). Berbagai function untuk membaca isi file dan menulis data ke dalam file dikerjakan selama program berjalan. Selesai proses maka file harus ditutup dengan memanggil function fclose atau fcloseall(). FILE *fopen(const char *filename, const char *mode);

Sequential Access

Prosedur & Fungsi

Keuntungan Rancangan top-down dengan pendekatan divide-and-conquer, program besar dapat dibagi menjadi modul-modul yang lebih kecil; Dapat dikerjakan oleh beberapa orang dengan koordinasi yang relatif mudah Lebih mudah dalam mencari kesalahan, lokalisasi dalam satu modul Modifikasi dapat dilakukan tanpa mengganggu program secara keseluruhan Mempermudah dokumentasi

Struktur Dalam merancang fungsi harus ditentukan: Data apa yang diperlukan function sebagai masukan untuk diolah Informasi apa yang dihasilkan (dikembalikan) function kepada pemanggil Algoritma yang digunakan untuk mrngolah data masukan menjadi informasi keluaran berserta variabel lokal Penulisan function terbagi atas: Function prototype(pendeklarasian fungsi) Function Definition(pendefinisian fungsi)

Prosedur Mengikuti mekanisme call-return: Prosedur di panggil Sekumpulan statement disimpan dalam prosedur dan dieksekusi Kontrol dikembalikan pada kode pemanggilan // Deklarasi Procedure <procedure_name> Procedure TestProcedure Begin // set of statements End // Memanggil Prosedur Call <procedure_name> Call TestProcedure

Pseudocode // Deklarasi Procedure AverageScore(input numeric, input numeric, input numrtic, output numeric) Begin character cStudentName numeric nTest1, nTest2, nTest3, nAverage display “Enter Student name” accept cStudentName display “Enter Test Score 1” call AverageScore (nTest1, nTest2, ntest3, nAverage) display cStudentname, nAverage End // Definition Procedure AverageScore(input numeric, input numeric, input numeric, output numeric, nTest1, nTest2, nTtest3, nAverage) nAverage=ntest1+ntest2+nTest3 end

Function /Fungsi Merupakan sejumlah instruksi yang dikelompokan menjadi satu, berdiri sendiri, membentuk suatu subprogram yang sering juga disebut subroutine. Function atau subprogram dibuat untuk melaksanakan suatu pekerjaan(fungsi) tertentu. Setiap fungsi mempunyai nama.

Salah satu metode perancangan program yang baik adalah menggunakan konsep modular atau sering disebut dengan pemrograman modular. Modul = program kecil. Dengan menggunakan metode ini maka masalah akan mudah disusun dan dipahami. Serta memliki manfaat software reusability, yaitu function yang diuat satu kali diharapkan dapat digunakan oleh program lain.

Sifat & Kategori Sifat Kategori Fan-in yang tinggi: makin sering suatu fungsi dipanggil oleh pemakai, nilai fan-in tinggi Fan-out rendah, makin sedikit(spesifik) tugas yang dilakukan suatu modul, makin rendah nilai fan-out Self-contained: kemampuan memenuhi kebutuhannya sendiri Kategori Standard Library Function: fungsi-fungsi yang disediakan compiler-nya. Programmer-defined function: fungsi yang dibuat programmer untuk digunakan dalam program

// Deklarasi function <function_name> function Tes Begin // set of statements End // Memanggil Prosedur Call <procedure_name> Call TestProcedure

Notasi Algoritmik Untuk Fungsi

Pemanggilan Fungsi

Notasi Algoritmik Untuk Prosedur

Pemanggilan Prosedur

Contoh PseudoCode Begin numeric nNumber1, nNumber2, nResult display “Enter the First Number” accept nNumber1 display “Enter the second number” accept nNumber2 // the return value of the function ProductOfNumber is Accepted in the Variabel Result nResult = call ProductOfNumbers(nNumber1, nNumber2) display nResult End Function ProductOfNumbers(numeric nNum1, nNum2) numeric nNumber3 nNumber3 = nNum1*nNum2 return nNumber3 end

Problem Statement… Diberikan pseudocode yang menggunakan prosedur untuk memproses 5 nomer dari user dan di cek apakah yang diberikan user itu genap atau bukan. Selain itu, ditampilkan jumlah semua nomer yang dimasukan oleh user. Carilah error dalam pseudocode dan tulis pseudocode yang benarnya. begin call addevennumbers // procedure is called display sum // sum of even numbers is displayed end procedure addevennumbers // procedure definition containing procedure body numeric nCounter, nNumber // number and counter to count the number // of input numbers are declared numeric nSum numeric nLimit=5 for (nCounter=0; nCounter<limit; nCounter=nCounter+1) // for loop to accept 5 numbers numeric nSum=0 display “enter the number” accept nNumber if nNumber%2=0 // check if the number even nSum=nSum+nNumber else display “number is odd”