You are on page 1of 4

Inti Materi Algoritma dan Struktur Data

Algoritma : Kumpulan/urutan langkah-langkah untuk menyelesaikan masalah (computerize) dengan


syarat :
1. Setiap langkah harus definite / pasti
2. minimal memiliki satu output
3. harus bisa berhenti / ada stopping criteria
Struktur data : Susunan data di RAM yang meliputi
Nilai Data yang berhubungan dengan type data
Data relationship yaitu hubungan antara data
Operasi pada data.
Struktur data sangat berperan penting dalam pemrograman. Karena tidak ada program yang bekerja
tanpa membutuhkan data. Program yang paling sederhana pun membutuhkan data. Pengaturan data
dalam memori diatur oleh struktur data. Bisa dibayangkan bila tanpa struktur data, maka suatu data /
variabel bisa saling overleaping dengan data / variabel lain sehingga output dari program tidak benar.
Secara grafik bisa digambarkan sebagai berikut :
Struktur Data

Program

Bahasa Pemrograman

Algoritma
Algoritma memberikan langkah-langkah yang dilakukan untuk menyelesaikan suatu masalah, struktur
data mengatur data-data yang dibutuhkan dalam memori, bahasa pemrograman menterjemahkan
algoritma yang sebelumnya telah disusun dalam bahasa tersebut. Hasilnya adalah sebuah program.
Struktur data statis dan dinamis memiliki kelebihan dan kekurangan masing-masing.
Struktur data statis membutuhkan alokasi memori yang tetap sehingga memori harus dipesan terlebih
dahulu sebelum digunakan. Akibatnya akan terjadi pemborosan memori jika ternyata memori yang
dipesan tidak digunakan seluruhnya. Kelebihan struktur data statis adalah letak datanya secara
berurutan dalam memori sehingga mudah untuk mengakses data tertentu yang dibutuhkan.
Struktur data dinamis membutuhkan alokasi memori sesuai banyaknya data yang didefinisikan.
Tentunya akan menghemat memori. Akan tetapi data tersimpan secara acak dalam memori, sehingga
untuk mengakses data tertenu dalam sebuah struktur data dinamis memerlukan waktu yang agak lama
karena harus dicari mulai dari data pertama dalam struktur data tersebut.
Struktur data statis baik digunakan untuk data yang ukurannya tidak besar. Struktur data dinamis baik
digunakan untuk data yang ukurannya sangat besar.
Linked list adalah suatu cara untuk menyimpan data dengan struktur sehingga dapat secara otomatis
menciptakan suatu tempat baru untuk menyimpan data yang diperlukan. Program akan berisi suatu
struct atau definisi kelas yang berisi variabel yang memegang informasi yang ada didalamnya, dan

mempunyai suatu pointer yang menunjuk ke suatu struct sesuai dengan tipe datanya.
Struktur dinamis ini mempunyai beberapa keuntungan dibanding struktur array yang bersifat statis.
Struktur ini lebih dinamis, karena banyaknya elemen dengan mudah ditambah atau dikurangi, berbeda
dengan array yang ukurannya bersifat tetap.
Manipulasi setiap elemen seperti menyisipkan, menghapus, maupun menambah dapat dilakukan
dengan lebih mudah.

Jenis-jenis Struktur data adalah


struktur data sederhana :
Linked List
Stack
Queue
Tree
Contoh program untuk mengubah data tertentu :
misalkan data dengan kode barang 'kd'
type llist = ^node;
node = record
kode_barang : string[10];
harga
: real;
next
: llist;
end;
var l : llist;
idenya adalah :
telusuri setiap node mulai dari depan hingga node terakhir. Jika ditemukan node dengan kode_barang =
'kd' maka ganti harga pada node tersebut dengan harga = harga + 1000.
disini dibutuhkan variabel lain untuk mempertahankan nilai p yaitu variabel r. langkah awal bernilai r =
p. kemudian telusuri mulai dari r pertama sampai nilai r yang terakhir jadi kondisi yang digunakan
untuk perulangan adalah r <> nil karena jika yang digunakan adalah r^.next <> nil maka nilai terakhir
tidak akan diperiksa.
procedure ubahdata(var p , r : llist);
begin
r := p;
while r <> nil do
begin
if r^.kode_barang = 'kd' then r^.harga = r^.harga + 1000;
r := r^.next;
end;
end;
contoh prosedur untuk mencetak linked list dari belakang ke depan;
idenya adalah :

kita mencari node terakhir kemudian mencetaknya setelah itu node tersebut di dispose dan di nil kan
setelah itu ulangi penelusuran lagi dari depan sampai node terakhir, cetak node tersebut kemudian di
dispose dan di nil kan demikian seterusnya.
procedure cetakterbalik(p : llist);
var k, r : llist;
begin
k := p;
r := p;
while k^.next<> nil do
begin
r := k;
while r^.next^.next <> nil do r := r^.next;
writeln(r^.next^.data);
dispose(r^.next);
r^.next := nil;
end;
writeln(k^.data);
end;
atau pindahkan isi stack ke variabel lain kemudian dicetak. Secara otomatis stack pada variable yang
baru tersebut telah tersusun terbalik.
Procedure cetak_data(l:link);
var r, p : link;
begin
while l <> nil do
begin
r := l;
if p = nil then begin p^.data = r^.data; p^.next := nil else
begin
r^.next := p;
p := r;
end;
r := l^.next;
dispose(l);
l := r;
end;
while p^.next <> nil then
begin
writeln(p^.data);
p := p^.next;
end;
end;
Preorder adalah proses yang terdiri dari urutan prosedur baca sebagai berikut :
procedure baca(x);
begin

cetak;
baca(kiri);
baca(kanan);
end;
InOrder adalah proses yang terdiri dari urutan prosedur baca sebagai berikut :
procedure baca(x);
begin
baca(kiri);
cetak;
baca(kanan);
end;
PostOrder adalah proses yang terdiri dari urutan prosedur baca sebagai berikut :
procedure baca(x);
begin
baca(kiri);
baca(kanan);
cetak;
end;
jika diberikan sebuah data dengan urutan :
Pre-Order

30

10

17

20

13

15

12

In-Order

10

17

13

20

30

12

15

Berdasarkan pre-order maka node root adalah 30.


30

10
5

15

17

20

13

12

Hasil kunjungan postorder adalah : 5, 3, 2, 13, 20, 17, 10, 12, 7, 15, 30.

You might also like