Anda di halaman 1dari 16

MAKALAH STRUKTUR DATA

(SEMESTER 3) DOSEN PAK LUKMAN ANAS

DI SUSUN OLEH

SITI MUJADILAH
105841105019
3.B

UNIVERSITAS MUHAMMADIKYAH MAKASSAR


DAFTAR ISI

DAFTAR ISI........................................................................................................................ii
BAB I PENDAHULUAN...................................................................................................
1.1 Latar Belakang...............................................................................................................
1.2 Rumusan Masalah..........................................................................................................
1.3 Tujuan ............................................................................................................................
BAB II PEMBAHASAN.....................................................................................................
2.1 Pengertian data ………….............................................................................................
2.2 Pengertian Struktur data.................................................................................................
2.3 Pengertian Array............................................................................................................
2.4 Karakteristik Array….....................................................................................................
2.5 Deklarasi Array..............................................................................................................
2.6 Jenis Array.....................................................................................................................
2.7 Stack..............................................................................................................................
BAB III Penutup................................................................................................................
3.1 Kesimpulan..................................................................................................................

BAB I
PENDAHULUAN

1.1 Latar Belakang


Didalam ilmu komputer, pemahaman tentang struktur data yang berkembang selama ini yaitu cara
menyimpan, mengatur, dan mengelola data dalam media penyimpanan komputer sehingga data
dapat digunakan secara efisien.

Sedangkan jika didefinisikan lebih jauh lagi, pengertian struktur data merupakan tata letak data yang
berisi kolom data, baik kolom yang terlihat oleh pengguna atau kolom yang hanya digunakan untuk
keperluan pemrograman yang tidak terlihat oleh pengguna.

Setiap baris kumpulan kolom disebut catatan. Lebar kolom untuk data dapat berubah dan bervariasi.
Ada kolom yang lebarnya berubah secara dinamis sesuai dengan input pengguna dan ada juga kolom
yang lebarnya diperbaiki.

Sesuai sifatnya, struktur data dapat diterapkan untuk pemrosesan basis data, misalnya untuk tujuan
data keuangan, atau untuk pengolah kata. Strutur data ini kolomnya berubah-ubah secara dinamis.
Contoh struktur data dapat dilihat dalam spreadsheet, database, pengolah kata, gambar
terkompresi, dan mengompresi file dengan teknik tertentu yang memanfaatkan struktur data.

1.2 Rumusan Masalah


a) Apa itu struktur data ?
b) Apa itu Array ?
c) apa itu stack ?

1.3 Tujuan
2 Untuk mengenal struktur data
3 Untuk mengenal Array
4 Untuk mengenal stack

BAB II
PEMBAHASAN

2.1 PENGERTIAN DATA

Data adalah representasi dari fakta dunia nyata. Fakta atau keterangan tentang kenyataan yang
disimpan, direkam atau direpresentasikan dalam bentuk tulisan, suara, gambar, sinyal atau simbol.
Pengertian data ini menyiratkan suatu nilai yang bisa dinyatakan dalam bentuk konstanta / variable.
Konstanta digunakan untuk menyatakan nilai tetap sedangkan variable digunakan dalam program
untuk menyatakan nilai yang dapat berubah-ubah selang eksekusi berlangsung.
Ada empat istilah data, yaitu:
1. Tipe data adalah jenis atau macam data di dalam suatu variable dalam bahasa
pemrograman.
2. Objek data mengacu kumpulan elemen, D (domain).
3. Representasi data : Suatu mapping dari struktur data ‘d’ ke suatu set ke struktur data
‘e’ (d===e) misal bolean di representasikan dalam 0 dan 1.
4. Struktur data biasa dipakai untuk mengelompokan beberapa informasi yang terkait
menjadi sebuah kesatuan.
Tipe data sederhana terbagi menjadi dua, yaitu:
1. Data sederhana tunggal. Misalnya : Integer, real / float, Boolean dan character.
2. Data sederhana majemuk. Misalnya : String.

2.2 PENGERTIAN STRUKTUR DATA

Struktur data adalah suatu koleksi / kelompok data yang dapat di karakteristikan oleh organisasi
serta operasi yang di definisikan terhadapnya.
Dalam teknik pemrograman,struktur data berarti tata letak yang berisi kolom-kolom data,baik itu
kolom yang tampak oleh pengguna (user) ataupun kolom yang hanya digunakan untuk keperluan
pemrograman yang tidak tampak oleh pengguna.

Struktur data meliputi :


 Struktur data sederhana, misalnya array dan Record.
Struktur data majemuk, yang terdiri :
 Linier : Stack, Queue, serta List dan Multilist
 Non Linier : Pohon Biner dan Graph

Pemakaian struktur data yang tepat di dalam proses pemrograman akan menghasilkan algoritma
yang lebih jelas dan tepat, sehingga menjadikan program secara keseluruhan lebih efisien dan
sederhana.

Struktur data standar yang biasanya digunakan dibidang informatika adalah :


 ADT , Array , Struk
 List linier (Linked List) dan variasinya
 Multilist
 Stack (Tumpukan)
 Queue (Antrian)
 Tree ( Pohon )
 Graph ( Graf )

PEMBUATAN STRUKTUR DATA

Untuk membuat menjadi struktur data, kita harus melakukan dulu aktivitas terhadap objek data,
yaitu :
o Mendeskkripsikan kumpulan operasi sah yang diterapkan ke elemen-elemen objek data.
o Menunjukan mekanisme kerja operasi-operasi.
Objek data integer ditambah operasi (+ , - , * , / , mod ,cell , floor , < , >) dan operasi-operasi lain
yang memanipuasi objek data integer menyatakan struktur data.
Struktur data = Objek data + { Operasi manipulasi }.

Tahap pembuatan struktur data adalah :


1. 1. Tahap pertama : Spesifikasi
Pendeskripsian / spesifikasi struktur data menyatakan apa yang dapat dilakukan struktur data, bukan
cara penerapannya. Pendeskripsian ini melibatkan level logic sehingga dapat digunakan konvensi
matematika untuk menyatakan sifat-sifat struktur data yang dikehendaki.
Spesifikasi dapat dilakukan dengan dua cara, yaitu :
 Spesifikasi secara formal
 Spesifikasi secara informal

2. Tahap kedua : Implementasi


Implementasi menyatakan cara penerapan struktur data dengan struktur data yang telah ada.
Implementasi struktur data adalah proses pendefinisian tipe data abstrak sehingga semua operasi
dapat dieksekusi computer. Implementasi struktur penyinpanan item-item data serta algoritma-
algoritma untuk implementasi operasi-operasi sehingga menjamin terpenuhinya karakteristik
struktur data, relasi item-item data atau invariant pada struktur data itu.

3. Tahap ketiga : Pemrograman


Pemrograman terstruktur adalah penerjemahan menjadi pernyataan di bahasa pemrograman
tertentu. Prosesnya terdiri dari :
• Deklarasi yang mendefinisikan objek-objek data dan hubungannya…
• Pembuatan prosedur / rutin untuk operasi-operasi dasar yang menjaga invariant pada
struktur data itu .

Sesuai dengan relasi yang didefinisikan di spesifikasi perancangan harus memilih tipe-tipe data yang
telah ada untuk merepresentasikan struktur data.
Struktur data di bangun menggunakan fasilitas pembentukan atau pembuatan struktur data yang
disediakan bahasa seperti array, record, dan sebagainya atau yang telah di buat seperti stack, queue,
atau himpunan menggunakan linked list.
Pembuatan struktur data adalah pembentukan tipe data lengkap yang mempunyai empat property
berikut :
1. Nama : Identifier tipe data
2. Domain : Domain / himpunan semesta nilai di tipe data
3. Konstanta (penyebutan anggota-anggotanya) : Cara penyebutan anggota-anggota tipe data
4. Operasi-operasi terhadap tipe data itu (operator) : Daftar operasi terhadap anggota
tipe data sehingga kelakuan objek data sesuai spesifikasi.

2.3 pengertian Array


Array atau larik di definisikan sebagai pemesanan alokasi memory berurutan.definisi ini
kurang tepat, karena terjadi kerancuan antara struktur data dan representasinya. Memang benar
array hampir selalu di implementasikan menggunakan memory berurutan tapi tidak selalu demikian.
Semua elemem array bertipe sama. Array cocok untuk organisasi kumpulan data homogen yang
ukuran atau jumlah elemen maksimumnya telah diketahui dari awal.
Homogen adalah bahwa setiap elemen dari sebuah array tertentu haruslah mempunyai tipe data
yang sama.

2.4 KARAKTERISTIK ARRAY


a) Mepunyai batasan dari pemesanan alokasi memori (bersifat statis)
b) Mempunyai tipe data sama (bersifat homogen)
c) Dapat diakses secara acak.

2.5 DEKLARASI ARRAY


Ada tiga hal yang harus di ketahui dalam mendeklarasikan array, yaitu :
a) Type data array
b) Nama variable array
c) Subkrip / index array.
Contoh deklarasi dari array adalah sebagai berikut :
int A[5] ; artinya variabel A adalah kumpulan data sebanyak 5 bilangan bertipe
integer.

2.6 JENIS ARRAY


1. ARRAY DIMENSI SATU
Deklarasi : Type_Data Nama_Variabel [index]
Rumus untuk menentukan jumlah elemen dalam array adalah :
 Perkalian dari index sebelumnya (untuk arraybdimensi dua dan tiga).

PEMETAAN (MAPPING) ARRAY DIMENSI SATU KE STORAGE


Rumus : @A[i] = B + (i – 1) * L
Dimana : @A[i] : Posisi array yang dicari
B : Posisi awal index di memori computer
i : Subkrip atau index array yang di cari
L : Ukuran atau besar memori suatu tipe data
2. ARRAY DIMENSI DUA
Deklarasi : Type_Data Nama_Variabel [index1] [index2]
Menentukan jumlah elemen dalam array dimensi dua :
 Perkalian dari statemen sebelumnya
PEMETAAN (MAPPING) ARRAY DIMENSI DUA KE STORAGE
Terbagi dua cara pandang (representasi) yang berbeda :
• Secara kolom per kolom (coloumn major order / CMO)
• Secara baris per baris (row major order / RMO)
Keterangan :
@M[i][j] = Posisi array yang di cari, M[0][0 = Posisi alamat awal index array, i = Baris, j = Kolom, L =
Ukuran memory type data, K = Banyaknya elemen per kolom, N = Banyaknya elemen per baris.

3. ARRAY DIMENSI TIGA


Deklarasi : type_Data Nama_Variabel [index1][index2][index3]
Menentukan jumlah elemen dalam array dimensi tiga :

 Perkalian dari statemen sebelumnya

PEMETAAN (MAPPING) ARRAY DIMENSI TIGA KE STORAGE


TRIANGULAR ARRAY (ARRAY SEGI TIGA)
Triangular array dapat merupakan Upper Triangular (seluruh elemen di bawah diagonal utama = 0),
ataupun Lower Triangular (seluruh elemen di atas diagonal utama = 0).
Dalam array Lower Triangular dengan N baris, jumlah maksimum elemen <> 0, tidak lebih dari
SPERSE ARRAY (ARRAY JARANG)
Suatu array yang sangat banyak elemen nol-nya.

2.7 OPERASI DASAR PADA ARRAY


Operasi terhadap elemen di array dilakukan dengan pengaksesan langsung. Nilai
di masing-masing posisi elemen dapat diambil dan nilai dapat disimpan tanpa melewati
posisi-posisi lain.
Terdapat dua tipe operasi, yaitu :
1. Operasi terhadap satu elemen / posisi dari array
2. Operasi terhadap array sebagai keseluruhan

Dua operasi paling dasar terhadap satu elemen / posisi adalah


1. Penyimpanan nilai elemen ke posisi tertentu di array
2. Pengambilan nilai elemen dari posisi tertentu di array

Operasi-operasi dasar terhadap array secara keseluruhan adalah :


1. Operasi penciptaan
2. Operasi penghancuran
3. Oparasi pemrosesan traversal
4. Operasi pencarian (table look-up)
5. Operasi sorting

 PENCIPTAAN DAN PENGHANCURAN


Operasi penciptaan biasa disebut inisialisasi.
Operasi ini untuk mempersiapkan struktur data untuk operasi-operasi berikutnya.
Operasi penghancuran menyatakan ketidak berlakuan struktur data atau membebaskan memory,
menyerahkan memory ke manajemen memory agar dapat di pergunakan keperluan lain.
Operasi penghancuran penting terutama bila struktur data di implementasikan secara dinamis
menggunakan pointer

 PENYIMPANAN DAN PENGAMBILAN NILAI


Biasanya bahasa pemrograman menyediakan sintaks tertentu untuk penyimpanan dan pengambilan
nilai elemen pada posisi tertentu di array.
Contoh :
A[10] = 78, berarti penyimpanan nilai 78 ke posisi ke-10 dari array A
C = A[10], berarti pengambilan nilai elemen posisi ke-10 dari array A
PEMROSESAN TRANSVERSAL
Operasi pemrosesan transversal adalah pemrosesan mengolah seluruh elemen secara sistematik.

 PENCARIAN DI ARRAY (table look-up)


Pencarian di array (table look-up) adalah proses pencarian suatu nilai di array. Klasifikasi pencarian
di array adalah :
1) Pencarian sekuen (sequential searching),yaitu:
i. Tanpa Boolean, terbagi:
• Tanpa sentinen
• Dengan sentinen
ii. Menggunakan boolean

2) Pencarian secara biner / dikotom (binary = dichotomy searching).

 PENGURUTAN ARRAY
Pengurutan atau sorting adalah proses yang paling sering di lakukan dalam pengolahan
data.pengurutan di bedakan menjadi dua, yaitu :
a. Pengurutan internal
Pengurutan dilakukan terhadap sekumpulan data di media memory internal komputer
dimana data dapat di akses elemennya secara langsung.
b. Pengurutan eksternal
Pengurutan data di memory sekunder. Biasanya data bervolume besar sehingga tidak
mampu dimuat semuanya di memori utama.

3. KEUNGGULAN DAN KELEMAHAN ARRAY


Keunggulan array adalah sebagai berikut :

1. Array sangat cocok untuk pengaksesan acak. Sembarang elemen di array dapat diacu secara
langsung tanpa melalui elemen-elemen lain.
2. Jika berada di suatu lokasi elemen, maka sangat mudah menelusuri ke elemen-
elemen tetangga, baik elemen pendahulu atau elemen penerus 3
3. Jika elemen-elemen array adalah nilai-nilai independen dan seluruhnya harus terjaga, maka
penggunaan penyimpanannya sangat efisien.
Kelemahan array adalah sebagai berikut :
Array mempunyai fleksibilitas rendah, sehingga tidak cocok untuk berbagai aplikasi karena array

mempunyai batasan sebagai berikut :


1. Array harus bertipe homogen. Kita tidak dapat mempunyai array dimana satu elemen
adalah karakter, elemen lain bilangan, dan elemen lain adalah tipe-tipe lain
2. Kebanyakan bahasa pemrograman mengimplementasikan array statik yang sulit
diubah ukurannya di waktu eksekusi. Bila penambahan dan pengurangan terjadi
terus-menerus, maka representasi statis
• Tidak efisien dalam penggunaan memori
• Menyiakan banyak waktu komputasi
• Pada suatu aplikasi, representasi statis tidak dimungkinkan

Bila penambahan dan pengurangan terjadi terus menerus, maka representasi statis (array):
1. Tidak efisien dalam penggunaan memory
2. Menyiakan banyak waktu komputasi
3. Pada suatu aplikasi, representasi statis tidak di mungkinkan.

2.7 STACK
DASAR TEORI

1. Pengertian Stack

Stack merupakan sebuah kumpulan data yang diletakkan di atas data lainya, seperti
sebuah tumpukan. Dengan demikian, stack merupakan salah satu struktur data yang
menerapkan prinsip LIFO (Last In First Out). Dimana elemen yang terakhir disimpan
dalam stack, menjadi elemen yang pertama diambil. Untuk meletakkan sebuah elemen
pada bagian atas dari stack, maka dilakukan operasi push. Sedangkan untuk
memindahkan sebuah elemen dari tempat atas tersebut dalam sebuah stack, maka
dilakukan operasi pop.

Gambar 4.1 Ilustrasi sebuah stack


2. Operasi Dasar Pada Stack

 Create
Merupakan operator yang berfungsi untuk membuat sebuah stack kosong.

struct STACK {
int top;
float data[5];
}; float
dta;
struct STACK stackbaru;

 IsEmpty
Merupakan operator yang berfungsi untuk menentukan apakah suatu stack
merupakan stack kosong. Tanda bahwa sebuah stack kosong adalah Top bernilai
kurang dari nol (-1).

bool isempty() {
if (stackbaru.top==1) return true;
else return false;
}

 IsFull
Merupakan operator yang digunakan untuk memeriksa apakah stack yang ada sudah
penuh. Stack akan penuh jika puncak stack terletak tepat dibawah jumlah
maksimum yang dapat ditampung stack (Top = MAX_STACK-1).

bool isfull() {
if (stackbaru.top==maxstack) return
true; else return false;
}

 Push
Merupakan operator yang berfungsi untuk menambahkan satu elemen ke dalam
stack dan tidak dapat dilakukan jika stack dalam keadaan penuh.

void push(float dta) {

if (isfull()==false) {
puts("stack penuh");
} else { stackbaru.top++;
stackbaru.data[top]=dta;
}
}

 Pop
Merupakan operator yang berfungsi untuk mengeluarkan satu elemen teratas dari
dalam stack dengan syarat stack tidak dalam kondisi kosong.

void pop() {
if (isempty()==false) {

cout<<"data kosong";
} else { cout<<"data yang terambil :
"<<stackbaru.data[top]<<endl;
stackbaru.top--;
}
}

 Clear
Fungsi yang digunakan untuk mengosongkan stack dengan cara mengeset Top
dengan 1. Jika Top bernilai kurang dari nol maka stack dianggap kosong.

void clear () {

top=-1
}

 Retrieve fungsi yang digunakan untuk melihat nilai yang berada pada posisi
tumpukan teratas.

void print() {
for (int i=0; i<=top; i++) {

cout<<stackbaru.data[i]<<"
";
}
}
3. Pointer Sebagai Penunjuk Stack

Selain menggunakan indeks, untuk menunjuk sebuah Top atau posisi teratas dari stack,
dapat juga digunakan pointer sebagai berikut.

 Membuat Stack Dengan Pointer

int S[10], *Top, *BatasAtas


Top = &S[-1];
BatasAtas = &S[10];

 Proses Push
if (Top < BatasAtas)
Top++;
*Top = X;
else
printf(“Stack Penuh”);

 Proses Pop

if (Top > &A[-1])


X= *Top; Top
--; else
printf(“Stack Kosong”);

4. Representasi Proses Stack

Stack adalah salah satu dari contoh struktur data yang terdiri dari satu collection,
yang juga menerapkan prinsip LIFO. Bila stack tersebut menggunakan array satu
dimensi, maka stack tersebut dapat diilustrasikan sebagai berikut :
Gambar 4.2 Ilustrasi sebuah stack 1 Dimensi menggunakan indeks array

Pada gambar 4.2 diatas diilustrasikan ada sebuah indeks array yang masih kosong pada awal
pembuatan stcak dimana n[10], variabel Top berada pada -1 yang menunjukkan indeks
masih dalam keadaan kosong.

Gambar 4.3 Ilustrasi Stack ketika sudah diisi data

Pada gambar 4.3 adalah keadaan ketika stack sudah diisi data. Pada kondisi ini data pertama
yang diinputkan adalah S[0]=11, data kedua S[1]=7, data ketiga S[2]=15, data keempat
S[23]=23. Kondisi Top sudah berubah menjadi data yang terakhir diinputkan (data keempat)
sehingga Top[3] X=23.

Variabel Top digunakan sebagai indeks untuk menunjuk nomor elemen array yang berisi nilai
stack yang berada paling kanan atau Top, yang ditunjukan dengan angka 3. Variabel X
bertipe integer digunakan sebagai perantara, dimana data yang akan disimpan kedalam
stack harus berasal dari X. Demikian juga data yang baru diambil dari dalam stack harus
diterima terlebih dahulu oleh variabel X, kemudian baru diberikan ke variabel lain untuk
diolah.

Oleh karena itu, jika ada instruksi PUSH, maka data baru (yang diambil dari isi variabel X)
akan disimpan dalam elemen S[4] sehingga indeks Top harus diarahkan ke posisi no.4.
Artinya, Top maju terlebih dahulu satu langkah ke S[4], kemudian baru mengisi nilai pada
S[4]. Sedangkan jika ada instruksi Pop, maka yang akan diambil adalah isi dari S[3] dan
datanya akan disimpan terlebih dahulu dalam variabel X, kemudian indeks Top menjadi
mundur satu langkah sehingga akan menunjuk S[2].

5. Double Stack

Double Stack atau Stack Ganda adalah dua stack yang berada dalam satu array. Satu
array digunakan untuk dua stack dimana dasar Stack1 berada pada sisi indeks yang
terkecil dan dasar Stack2 berada pada sisi indeks yang terbesar. Sama halnya dengan
Single Stack, Double Stack juga menerapkan prinsip LIFO (Last in Firt Out).

Gambar 4.4 Ilustrasi double stack

Pada gambar 4.4 diatas adalah ilustrasi indeks array pada double stack. Padastack 1
kondisi data pertama yang diinputkan adalah S[0], data kedua S[1], data ketiga S[2] dan
Top=data input terakhir S[2]. Sedangkan pada stack 2 data pertama adalah S[9], data
kedua S[8], data ketiga S[7], data keempat S[6] dan Top=data input terakhir S[6].

6. Operasi Dasar Pada Double Stack


 Inisialisasi
Proses awal adalah proses menyiapkan indeks penunjuk stack untuk pertama kali.
Pada tahap ini ditetapkan Top1=-1 (sama seperti single stack) dan Top2=banyak
jumlah data.

void AWAL (void)


{
Top1 = -1;
Top2 = n;
}

 Is Empty
Sama dengan single stack, yaitu proses pengecekan stack dalam kondisi kosong

if(top1==-1) return true; if(top2==n) return true;

 Is Full
Sama dengan single stack, yaitu proses pengecekan stack dalam kondisi kosong

int full(void){
if(top1+1>=top2){
return true;
}

 Push (Stack1 dan Stack2)


Proses mengisi data pada stack1 maupun stack2

void PUSH1 (void) void PUSH2 (void)


{ {
Top1 = Top1 + 1; Top2 = Top2 - 1;
S[Top1] = X; S[Top2] = X;
} }

 Pop (Stack1 dan Stack2)


Proses mengambil data pada stack1 maupun stack2
void POP1 (void) void POP2 (void)
{ {
X = S[Top1]; X = S[Top2];
Top1 = Top1 - 1; Top2 = Top2 + 1;
} }

BAB III
PENUTUP

3.1 Kesimpulan
Struktur data merupakan salah satu bahan dasar pembuatan program. Pemakaian struktur data yang
tepat di dalam proses pemrograman, akan menghasilkan algoritma yang jelas dan tepat sehingga
menjadikan program secara keseluruhan lebih sederhana. Array merupakan bagian dari struktur
data yaitu termasuk kedalam struktur data sederhana yang dapat di definisikan sebagai pemesanan
alokasi memory sementara pada komputer. Apabila kita membuat program dengan data yang sudah
kita ketahui batasnyamaka kita menggunakan Array (type data statis), namun apabila datanya belum
kita ketahui batasnya maka gunakan pointer (type data dinamis).

Anda mungkin juga menyukai