• Tidak ada hasil yang ditemukan

Algoritma dan Struktur Data

N/A
N/A
Protected

Academic year: 2018

Membagikan "Algoritma dan Struktur Data"

Copied!
26
0
0

Teks penuh

(1)
(2)

Variabel Lokal

Variable Global

(3)

 Jika variabel statis bersifat lokal, maka hanya dikenal

dalam fungsi tersebut saja.

 Jika variabel statis bersifat global, maka dikenal di

seluruh program

 Inisialasisai hanya dilakukan sekali, yaitu pada saat

fungsi dipanggil pertama kali.

 Adalah variabel yang memiliki nilai tetap, artinya

nilai dari variabel tersebut akan tetap diingat oleh program, sehingga dapat digunakan untuk menyimpan state nilai pada saat pemanggilan fungsi berikutnya.

 Nilai variabel statis akan bernilai sama dengan nilai

(4)
(5)
(6)
(7)

Penggunaan record dalam jumlah yang

banyak alokasi memory konvensional tidak bisa diandalkan.

Misal kita akan bekerja dengan fle yang

menyimpan sangat banyak record, di mana setiap record juga memiliki banyak feld.

- Menampilkan record - Menambahkan record - Menghapus record

(8)

Dibutuhkan suatu rantai data yang panjang

dan saling berhubungan.

Rantai data tersebut harus mampu

menampung semua data yang kita miliki.

Penggunaan array saja jelas tidak bisa,

karena kita bekerja dengan barisan data heterogen.

Penggunaan Struct (Array of Struct) juga

belum mencukupi.

Kita tidak mungkin akan melakukan alokasi

(9)

Solusi yang lebih baik adalah menggunakan

(10)

Secara teori, linked list adalah sejumlah

node yang dihubungkan secara linier dengan bantuan pointer.

Untuk implementasi Linked List, kita harus

memahami Struct dan pointer terlebih dahulu.

Penggunaan struct memungkinkan kita

(11)

#include <stdio.h>

struct Test test1; test1.x = 10;

test1.c = ‘A’;

printf(“Isi dari test1.x: %d\n”, test1.x);

printf(“Isi dari test1.c: %c\n”, test1.c);

Struct adalah salah satu dasar

(12)

Memesan memory secara konvensional misal char s[10000], namun sayangnya, kita akan kehilangan kebebasan untuk mendealokasikan memory yang sudah tidak terpakai.

Pengalokasian memory secara dinamis dapat dilakukan dengan salah satu fungsi alokasi memory yaitu malloc().

(13)

Fungsi ini dideklarasikan di dalam header

stdlib.h. Dengan demikian, jangan lupa untuk meng-include header tersebut.

Fungsi ini ini akan meminta memory

sebanyak size bytes, dan apabila sukses, pointer ke lokasi memory yang dipesan akan dikembalikan.

Apabila gagal, fungsi ini akan

mengembalikan NULL.

(14)

Fungsi ini dideklarasikan di dalam header

stdlib.h. Dengan demikian, jangan lupa untuk meng-include header tersebut.

Fungsi ini akan membebaskan memory

(15)

Sebagai contoh, kita akan mengalokasikan array of character sejumlah 50000 buah secara dinamis.

kita memesan memory sejumlah 50000 kali

ukuran char dan kita melakukan typecasting ke bentuk char *.

#include <stdio.h> #include <stdlib.h> int main()

{

char *s = (char *) malloc (50000 * sizeof (char));

(16)

#include <stdio.h>

struct Test * test1 = (struct Test

*) malloc (sizeof (struct Test));

test1 -> x = 10; test1 -> c = ‘A’;

printf(“Isi dari test1->x: %d\ n”,

test1->x);

(17)

1. Seperti contoh terdahulu, kita

mendeklarasikan Struct Test.

2. Kita memesan memori secara dinamis yang

akan digunakan oleh struct test1. Kita memesan sejumlah ukuran Struct Test, dan hasilnya akan digunakan untuk menyimpan test1.

3. Apabila sebelumnya kita menggunakan

(18)

Secara teori, linked list adalah sejumlah

node yang dihubungkan secara linier dengan bantuan pointer.

Dikatakan singly (single) linked apabila

hanya ada satu pointer yang menghubungkan setiap node.

Setiap node akan berbentuk struct dan

(19)

Kita akan mulai dengan deklarasi struct

untuk node.

variabel next ini akan menghubungkan kita

dengan node di sebelah kita, yang juga bertipe struct tnode.

Hal inilah yang menyebabkan next harus

bertipe struct tnode.

struct tnode {

int x;

(20)

Selanjutnya, kita akan mendeklarasikan

beberapa variabel pointer bertipe struct tnode.

Beberapa variabel tersebut akan kita

gunakan sebagai awal dari linked list, node aktif dalam linked list, dan node sementara yang kita gunakan dalam pembuatan node di linked list. Berikan nilai awal NULL kepada mereka.

struct tnode *head=NULL, *curr=NULL,

(21)

Node yang dibuat pertama akan menjadi

(22)

int i; nilai dari 0 sampai 4. Pembuatan node dilakukan dengan fungsi malloc().

Setelah itu, kita perlu membuat node dan penghubung. Pertama-tama, kita akan menguji apakah head bernilai (curr), juga kita

(23)

Sekarang, bagaimana kalau head tidak

bernilai NULL alias kita telah memiliki satu

atau lebih node? Yang pertama kita lakukan

adalah menghubungkan pointer next dari

node aktif (curr) ke node yang baru saja

kita buat.

Dengan demikian, kita baru saja

membuat penghubung antara rantai lama

dengan mata rantai barucurr -> next = NULL;

(24)

curr = head;

while (curr != NULL) {

Pertama-tama, kita meletakkan node aktif (curr) ke posisi head. Setelah itu, kita akan

pindahkan kunjungi satu per satu node dengan

memindahkan node aktif (curr) ke posisi sebelahnya.

Semua kunjungan tersebut

(25)

#include <stdio.h>

struct tnode *next; };

struct tnode *head=NULL, *curr=NULL, *node=NULL; int i;

for (i=0; i<5; i++) {

node = (struct tnode *)

malloc (sizeof(struct tnode)); node -> x = i;

(26)

Referensi

Dokumen terkait

Jika NEW adalah suatu variabel pointer, maka GETNODE(NEW) akan menyebabkan node yang ditunjuk oleh variabel pointer NEW disisipkan ke dalam linked list..

Kembangkan program antrian dengan menggunakan ADT Cicular Single Linked List yang telah dibuat pada praktikum 7. Perhatikan bahwa sifat antrian adalah FIFO : First

 Baca code beserta panduan proses yang terjadi, pahami, lalu gambarkan ilustrasi proses terjadinya penghapusan di belakang.. Misalkan saja data pada Linked List

Fungsi deletenode( ) akan menghapus node pada posisi curr jika linked list tidak kosong dan memindahkan pointer curr ke posisi node pertama, atau curr bernilai NULL apabila linked

Untuk menyisipkan sebuah elemen baru ke dalam sebuah linked list pada posisi tertentu kita harus menemukan terlebih dahulu alamat memori dari elemen yang akan disisipi..

4 LINKED LIST Linked List Senarai Berantai adalah jenis struktur data yang berisi kumpulan data yang disusun secara linear dengan setiap data disimpan dalam sebuah simpul dan antara

Buatlah program Linked List dengan insert data angka NPM anda masing-masing, kemudian implementasikan deletion di awal, akhir, dan tengah pada indeks ke-3!. Tampilkan jumlah node Linked

Pembentukan Binary Tree 1 Menyiapkan node baru: ● Alokasikan memori ● Memasukkan informasi ● Set pointer kiri dan kanan = NULL 2 Menyisipkan pada posisi yg tepat ● Penelusuran =>