Langsung ke konten utama

[ALGORITMA DAN STRUKTUR DATA] MODUL 3

MODUL 3
STACK
3.1 Tujuan Praktikum
1.      Mengetahui dan memahami tentang Stack
2.      Dapat Mengimplementasikan Fungsi Stack
3.2 Dasar Teori
Stack adalah suatu daftar atau urutan elemen yang elemennya dapat diambil dan ditambah hanya hanya melalui satu jalur saja, yaitu bagian depan list. Contoh dalam kehidupan sehari-hari adalah tumpukan buku di perpustakaan yang tumpukannya dapat ditambah pada bagian paling atas dan mengambilnya dari bagian paling atas pula.
Ada 2 operasi paling dasar yang penting dari stack yang dapat dilakukan, yaitu :
 a. Operasi push yaitu operasi menambahkan elemen data pada urutan terakhir (paling atas).
 b. Operasi pop yaitu operasi mengambil sebuah elemen data pada urutan terakhir dari stack.
 Tumpukan disebut juga “Push Down Back” yaitu penambahan elemen baru (push) dan penghapusan elemen dari tumpukan (pop) Untuk mengimplementasikan stack, bisa menggunakan linked list atau juga array, tergantung pada permasalahan yang dihadapi. Apabila permasalahan yang dihadapi adalah permasalahan tumpukan (stack) dimana jumlah elemen maksimum dibatasi, maka bisa digunakan array. Apabila jumlah elemen maksimumnya tidak dibatasi, maka linked list lebih tepat digunakan. Salah satu konsep yang efektif untuk menyimpan dan mengambil data adalah “terakhir masuk sebagai yang pertama keluar” (Last in First Out/LIFO).
 Dengan konsep ini, pengambilan data akan berkebalikan urutannya dengan penyimpanan data.
Bentuk penyajian stack bisa menggunakan tipe data array, tetapi sebenarnya penyajian stack menggunakan array adalah kurang tepat karena banyaknya elmen dalam array adalah statis, sedangkan dalam stack banyaknya elemen sangat bervariasi atau dinamis. Meskipun demikian, array bisa digunakan untuk penyajian stack, tetapi dengan anggapan bahwa banyaknya elemen maksimal dari suatu stack tidak melebihi batas maksimum banyaknya elemen array. Pada suatu saat, ukuran stack akan sama dengan ukuran array. Bila diteruskan menambah data, maka akan terjadi overflow. Oleh karena itu, perlu ditambahkan data untuk mencatat posisi ujung stack. Ada dua macam penyajian stack menggunakan array, yaitu Single stack dan Double stack.

Deklarasi Umum
Bentuk deklarasi single stack:
#define MAX 50
#define true 1
#define false 0
Char stack[MAX];
Int top;

Operasi-Operasi Single Stack
1.Fungsi Init
2.Fungsi Full
3.Fungsi empty
4.Fungsi clear
5.Fungsi Push
6.Fungsi Pop
            Struktur data ini banyak dipakai dalam informatika, misalnya untuk merepresentasikan :
-           Pemanggilan Prosedur
-           Perhitungan ekspresi aritmatika.

Definis S adalah Stack dengan elemen ElmtS, maka definisi fungsional stack adalah:
CreateEmpty        : S {Membuat sebuah stack kosong}
IsEmpty               : S Boolean {Test Stack kosong, true jika kosong}
IsFull                    : S Boolean {Test Stack penuh, true jika stack penuh}
Push                 : ElmtS x SS {Menambahkan sebuah elemen ElmtS sebagai TOP, TOP berubah nilainya.}
Pop      : SS x ElmtS {Mengambil nilai elemen TOP, sehingga TOP yang baru adalah elemen yang datang sebelum elemen TOP, mungkin stack menjadi kosong}

3.3 Pembahasan
Implementasi Stack dengan beberapa modul.
Membuat File stack.h
#ifndef stack_H
#define stack_H
#include "boolean.h"
#define Nil 0

typedef int infotype;
typedef int address;
typedef struct {
      infotype *T;
      address TOP;
      int Size;
} Stack;

#define Top(S) (S).TOP
#define InfoTop(S) (S).T[(S).TOP]
#define Size(S) (S).Size

boolean IsEmpty (Stack S);
boolean IsFull (Stack S);
void CreateEmpty(Stack *S);
void Push(Stack *S, infotype X);
void Pop(Stack *S, infotype* X);

#endif






Membuat File stack.c
#include "boolean.h"
#include "stack.h"
#include "stdlib.h"

boolean IsEmpty (Stack S) {
      return (Top(S) == Nil);
}

boolean IsFull(Stack S) {
      return (Top(S) == Size(S)+1);
}

void createempty(Stack * S , int Size) {
      (*S).T = (int *) malloc((Size+1) * sizeof(int));
      Top(*S) = Nil;
      Size(*S) = Size;
}

void Destruct(Stack *S) {
      free ((*S).T);
}

void Push(Stack *S, infotype X) {
      Top(*S)++;
      InfoTop(*S) = X;
}

Driver yang memanfaatkan stack.h dan stack.c adalah mstack.c
#include "stack.h"
#include "stdio.h"
#include "stdlib.h"

int main() {
Stack S;
infotype X;
printf (" stack");
createempty(&S,100);

printf("size stack : %d \n",Size(S));
Push(&S,3);
printf("Nilai top dan infonya : %d dan %d\n",Top(S), InfoTop(S));
Push(&S,8);
printf("Nilai top dan infonya : %d dan %d\n",Top(S), InfoTop(S));
Destruct(&S);
return 0;
}

Membuat boolean.h
#ifndef boolean_H
#define boolean_H
#define true 1
#define false 0
#define boolean unsigned char
#endif

Apabila terjadi dengan kata kunci “WinMain” pada saat compile, kita bisa menggunakan compile manual untuk membuat file stack.o dan stack.h nya.
Berikut langkah – langkahnya :
1.      Buka Command Prompt
2.      Pada CMD, masuk kedalam direktori file file diatas, contoh karena saya menyimpan di drive E dan difolder tugas kuliah maka saya pindah dahulu ke direktori E:\Tugas Kuliah\Praktikum Alstruk\Pertemuan Ke 4
3.      Lalu buka Windows Explorer dan masuk kedalam folder instalan dev c++ kalian, masuk ke dalam folder MinGW64 -> Bin -> lalu drag file gcc.exe kedalam CMD, akan jadi seperti ini:
4.      Setelah itu ketikan perintah “-c stack.c” untuk membuat file stack.o. Lalu tekan enter
5.      Selanjutnya ketikan perintah “-o stack stack.c stack.o” untuk membuat exe. Lalu tekan enter.
6.      Coba compile kembali pada dev c++ maka, seharusnya akan lancar dan tampil tampilan dibawah ini.































DAFTAR PUSTAKA
·         Hendra. “Stack Dalam Bahasa C”. 5 Juni 2016. https://endathedoctor.wordpress.com/2012/12/31/stack-dalam-bahasa-c/
·         Rudi. “Stack: Tumpukan Dalam Bahasa C”. 5 Juni 2016.
Sulastri, Heni.2016. Modul Praktikum Algoritma & Struktur Data. Tasikmalaya:Teknik Informatika Universitas Siliwan

Komentar

Postingan populer dari blog ini

Memahami Dasar Controller dan View Pada Laravel

Memahami Dasar Controller dan View Pada Laravel Ya, sesuai judul diatas, setelah mempelajari dasar laravel khususnya routing laravel pada bahasan sebelumnya, selanjutnya kita akan Memahami Dasar Contoller dan View Pada Laravel. Sebelumnya kita harus tahu konsep MVC. M adalah Model, Model digunakan untuk query atau proses mengambil data dari database. V adalah View, View digunakan untuk tampilan user berupa html, css, js dan data yang bersifat client. Sedangkan C adalah Controller, yang digunakan untuk mengatur atau menjembatani antara model dan view juga bisa digunakan untuk mengatur alur program. Untuk langkah awal buka file web.php, dan didalam folder controllers buat file dengan nama ProfileController.php. Di materi sebelumnya kita lngsung mengedit di file web.php pada route. Kali ini saya akan mencoba untuk membuat coding yang terpisah dengan file route, kita hanya memanggil indexnya dalam route::get. Setelah membuat ProfileController.php di folder kel1 ya...