Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Linked List.

Presentasi serupa


Presentasi berjudul: "Linked List."— Transcript presentasi:

1 Linked List

2 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.

3 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 elemen memerlukan tempat byte pada segmen memori. ( integer size memori = 2 byte)

4 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.

5 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);

6 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.

7 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).

8 Lanjutan …

9 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.

10 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

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

12 Circular Linked List Pointer elemen terakhir kembali ke head elemen pertama

13 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

14 Deklarasi Doubly Linked List

15 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)

16 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.

17 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;

18 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;

19 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));

20 Lanjutan ….

21 Contoh Lain

22 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.

23 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;

24 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

25 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

26

27

28

29

30 Aplikasi pada C++

31 Menambahkan Node pada Akhir

32 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

33 Pencarian List

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

35

36

37

38

39 LIFO Linked List Last-In-First-Out

40 FIFO Linked List First-In-First-Out

41 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

42 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.

43 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);

44 Sequential Access

45 Prosedur & Fungsi

46 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

47 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)

48 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

49 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

50 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.

51 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.

52 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

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

54 Notasi Algoritmik Untuk Fungsi

55 Pemanggilan Fungsi

56 Notasi Algoritmik Untuk Prosedur

57 Pemanggilan Prosedur

58 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

59 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”


Download ppt "Linked List."

Presentasi serupa


Iklan oleh Google