| PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 138 Gambar 6.9 Lanjutan struktur code latihan C++
| PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 139 Hasil compile jika tekan 1 maka akan timbul perintah input data Gambar 6.10 hasil run Hasil compile jika tekan 2 maka akan terhapus Gambar 6.11 hasil run Hasil compile jikatekan 3 maka akan keluar Lanjutan gambar 6.12 6.5. STUDI KASUS Buatlah program baru dengan cara file-new-source atau gunakan CTRL+N kemudian ketik source code programnnya seperti dibawah :
| PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 140
| PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 141
| PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 142
| PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 143 #include <iostream> #include <conio.h> #include <stdio.h> #define max 10 // study kasus using namespace std; struct tumpukan { int atas; int data[max]; }T; void awal() { T.atas =- 1; } int kosong() { if (T.atas == -1) return 1; else return 0; } int penuh()
| PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 144 { if (T.atas == max-1) return 1; else return 0; } void input (int data) { if (kosong () == 1) { T.atas++; T.data [T.atas] = data; cout << "Data " << T.data[T.atas] <<" masuk ke stack\n"; } else if (penuh () == 0) { T.atas++; T.data [T.atas] = data; cout << "Data " << T.data [T.atas] << " masuk ke stack\n"; } } void hapus() {
| PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 145 if (kosong() == 0) { cout << "Data teratas sudah terambil\n"; T.atas--; } else cout << "Data kosong\n"; } void tampil() { if (kosong() == 0) { for (int i = T.atas; i >= 0; i--) { cout << "\nTumpukan ke "<< i + 1 << "=" << T.data[i]; } } else cout << "Tumpukan kosong\n"; } void bersih() { T.atas =- 1; cout << "Tumpukan kosong!\n";
| PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 146 } main(void) { int pil, data; awal(); do { cout << "\n1. Input\n2. Hapus\n3. Tampil\n4. Bersihkan\n5. Keluar\nMasukan pilihan : "; cin >> pil; switch (pil) { case 1: cout << "Masukan data = "; cin >> data; input (data); break; case 2: hapus(); break; case 3: tampil(); break; case 4: bersih(); break;
| PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 147 case 5: cout << "Terimakasih, tekan enter untuk keluar"<< endl; case 6:; cout << "orewa : monkey d. luffy\n"; } getch(); } while (pil != 5); } Compile dan perbaiki sampai benar
| PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 148
| PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 149
| PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 150
| PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 151 Gambar 6.13 struktur pemrograman
| PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 152 Hasil running
| PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 153 Gambar 6.14 hasil compile
| PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 154 Gambar flochart
| PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 155 #include<stdio.h> #include<stdlib.h> #include <conio.h> typedef struct node { int data; struct node *link; }NODE; NODE *top = NULL; void push(); void pop(); void display(); int main() { system("color 02"); int choice = 0; while(1) { printf("\n1.Push\n"); printf("2.Pop\n"); printf("3.Display\n"); printf("4.Quit\n\n"); printf("masukan pilihan anda : "); scanf("%d",&choice); switch(choice) { case 1 :
| PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 156 push(); break; case 2: pop(); break; case 3: display(); break; case 4: exit(0); default: printf("\nPILIHAN TIDAK TERSEDIA\n"); } } getch(); } void push() { NODE *temp; int info = 0; printf("Masukkan data yang akan diinput (0-9999) : "); scanf("%d",&info); temp = (NODE *) malloc(sizeof(NODE)); if (temp == NULL) printf("\ntidak ada didalam memori"); else { temp->data = info;
| PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 157 temp->link = top; top = temp; printf(" Node telah dimasukkan di Top(Front) Berhasil !!\n"); } } void pop() { NODE *tmp; if(top == NULL) printf("Stack is empty!!\n"); else { tmp = top; printf("Popped data : %d\n",tmp->data); top = top->link; free(tmp); } } void display() { NODE *temp; if(top == NULL) { printf("Empty Stack !!!\n"); } else { temp = top;
| PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 158 printf("Stack :- \n"); while(temp != NULL) { printf("\n ____\n"); printf("|%4d|",temp->data); printf("bab 6 telah selesai"); temp = temp->link; } } } Compile dan perbaiki sampai benar
| PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 159
| PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 160
| PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 161 Gambbar 6.15 struktur dasar pemrograman
| PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 162 Tampilan running Gambar 6.16 tampilan running
| PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 163 6.6 KESIMPULAN DAN SARAN a. Kesimpulan Stack adalah suatu koleksi atau kumpulan item data yang terorganisasi dalam bentuk urutan linier, yang operasi pemasukkan dan penghapusan datanya dilakukan pada salah satu sisinya. Keunikkan pada stack adalah dimana node yang ditambahkan dalam list dan diambil dari list hanya pada kepala, dengan prinsip pengolahannya adalah Last-in FirstOut (LIFO). b. Saran Laporan ini masih terdapat banyak kesalahan karena terbatasnya pengetahuan dan kurangnya referensi materi pada laporannya ini. Diharapkan kepada pembaca dapat memberikan saran sebagai motivasi pembuatan laporan selanjutnya
| PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 164
| PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 165 BAB VII QUEUE OLEH Hendra Sunarji 07352211052 PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS TEKNIK UNIVERSITAS KHAIRUN TERNATE 2022
| PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 166 BAB VII QUEUE 7.1 Pendahuluan Queue atau antrian merupakan kumpulan elemen yang pengisian dan penghapusan elemen yang dilakukan dari sisi atau gerbang yang berbeda beda. Pengisian dilakukan dari gerbang belakang dan penghapusan gerbang depan. Hal ini menunjukan bahwa untuk queue mempunyai dua gerbang yaitu gerbang depan dan belakang. Dengan demikian dapat dlihat bahwa queue mempunyai sifat FIFO ( Frist in, Frist out ), yaitu elemen yang pertama masuk akan keluar pertama juga. Represnatsi queue dapat deklarasi dengan menggunakan array atau linked list resresntasi queue dengan array atau linked list. Representasi queue dengan array ada penunjuk depan dan belakang yang digunakan untuk menunjuk elemen posisi depan dan elemen posisi belakang.sehingga dapat diketahui queue kosong atau tidak. Queue dapat ditambah selama belakang tidak sama dengan isi dan maksimum array. Operasi penyisipan elemen queue digunakan untuk mengambil atau menghapus elemen dan suatu queue. Operasi penghapusan elemen pada circular yang dihapus adalah selalu yang berada didepan sehingga penunjuk depan akan naik satu (depan + 1 ) jika depan lebih kecil dari maksimum elemen array . tetapi dpena di atur menjadi satu (depan =1 ) jika depan sama dengan maksimum elemen array.
| PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 167 72 TUJUAN PRAKTIKUM a. Memahami konsep Queue b. Mempraktikan cara penggunaan Queue dalam C++ 73 LANGKAH-LANGKAH KEGIATAN PRAKTIKUM a. Bukalah aplikasi Dev C++ melalui start menu : Gambar 7.1 Tampilan Aplikasi Dev C++ b. Tampilan awal akan tampak seperti gambar dibawah ini : Gambar 7.2 Tampilan Awal Dev C++
| PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 168 c. Buatlah program baru dengan cara file – new – source bisa juga gunakan Ctrl+N seperti gambar dibawah ini : Gambar 7.3 Membuat Project Baru d. Ketik source code programnya seperti gambar dibawah ini : Gambar 7.4 Struktur Kode C++ e. Setelah menulis sourcnya tekan compile and run seperti gambar dibawah ini: Gambar 7.5 Proses Compile
| PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 169 f. Akan muncul dialog untuk menyimpan program. Berikan nama sesuai yang diinginkan. Gambar 7.6 Proses Penyimpanan g. Setelah klik save, akan muncul jendela yang menampilkan hasil program array yang telah dibuat. Gambar 7.7 tampilan running h. Anda telah berhasi membuat sebuah program array dengan Bahasa Pemograman C++ menggunakan Dev C++.
| PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 170 7.4 Latihan Kegiatan Praktikum A. Studi Kasus 1 Flowchart Queue dalam array latihan 29
| PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 171 Penjelasan : Dimulai dengan terminator dan header lalu dimasukan variabel yang di inginkan. Memasuki decision While untuk melanjutkan case yang di inginkan atau tidak sama sekali dan diberikan case berupa (enqueu, dequeue, display, dan exit) jika tidak maka pilihan tidak tersedia dan ditutup dengan getch(); sebagai penyelesaiannya. //*Program of queue using array*/ #include <stdio.h> #include <stdlib.h> #include <conio.h> #define MAX 5 int rear = -1; int front = -1; int queue_arr[MAX]; void enqueue(); void dequeue(); void display(); main() { int choice;
| PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 172 while(1) { printf("1.Insert\n"); printf("2.Delete\n"); printf("3.Display\n"); printf("4.Quit\n"); printf("Enter your choice : "); scanf("%d",&choice); //tujuan Praktikum : //1) Memahami Konsep Queue //2) Mempraktekkan cara Penggunaan Queue dalam C++ //5) switch(choice) { case 1 : enqueue(); break;
| PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 173 case 2 : dequeue(); break; case 3: display(); break; case 4: exit(1); default: printf("PILIHAN TIDAK TERSEDIA\n"); } } getch(); }
| PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 174 void enqueue() { int added_item; if (rear == MAX - 1) printf("Queue Overflow\n"); else { if (front == -1) front = 0; printf("Input the element for adding in queue : "); scanf("%d", &added_item); rear = rear + 1; queue_arr[rear] = added_item ; } } void dequeue() { if (front == -1 || front > rear)
| PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 175 { printf("Queue Underflow\n"); return ; } else { printf("Element deleted from queue is : %d\n", queue_arr[front]); front = front + 1; } } void display() { int i; if (front == -1) printf("Queue is empty\n"); else {
| PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 176 printf("Queue is :\n"); for(i = front; i <= rear; i++) printf("%d ",queue_arr[i]); printf("\n"); } } Compile sampai benar
| PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 177 Gambar 7.8 code Program
| PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 178 Tampilan setelah di running Gambar 7.9 Stuktur Program
| PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 179 B. Studi Kasus 2 Flowchart
| PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 180 Penjelasan : Dimulai denga terminator dan header, lalu di lanjutkan dengan menginput variabel queue . setelah itu masuk kedalam sistem atau proses Switch untuk memasuki kasus atau pilihan yang di berikan (enqueue, dequeue, display, exit dan default jika pesan tidak di temukan) lalu di tutup dengan gethch untuk penyelesaiannya #include <stdlib.h> #include <stdio.h> #include <conio.h> typedef struct node { int data; struct node *link; } NODE; NODE *front, *rear = NULL; void enqueue(); void dequeue(); void display(); int main() {
| PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 181 int choice = 0; while(1) { printf("\n1.Push\n"); printf("2.Pop\n"); printf("3.Display\n"); printf("4.Quit\n\n"); printf("Enter your choice : "); scanf("%d",&choice); switch(choice) { case 1 : enqueue(); break; case 2: dequeue(); break; case 3:
| PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 182 display(); break; case 4: exit(0); default: printf("\nPILIHAN TIDAK TERSEDIA\n"); } } getch(); } void enqueue() { NODE *temp; int info = 0; printf("Enter data to be enqueued (0-9999) : "); scanf("%d",&info); temp = (NODE *) malloc(sizeof(NODE)); if (temp == NULL)
| PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 183 printf("\nMemory Allocation Failed"); else { temp->data = info; temp->link = NULL; if (front == NULL) { front = rear = temp; } else { rear->link = temp; rear = temp; } printf(" Node has been inserted at End Successfully !!"); } } void dequeue()
| PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 184 { NODE *temp; int info; if (front == NULL) { printf(" Underflow!!!"); } else { temp = front; info = front->data; if (front == rear) { rear = NULL; } front = front->link; temp->link = NULL; printf(" Deleted Node(From Front)with the Data: %d\n", info);
| PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 185 free(temp); } } void display() { NODE *temp; if (front == NULL) printf("Empty Queue\n"); else { temp = front; printf("Front->"); while (temp) { printf("[%d]->", temp->data); temp = temp->link; } printf("Rear\n");
| PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 186 } } Compile sampai benar Gambar 7.10 Hasil Running
| PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 187 7.5 Kesimpulan dan Saran A. Kesimpulan Queue (antrian) adalah salah satu list linear dari struktur data yang beroperasi dengan cara FIFO (Frist in, Frist out) yaitu elemen pertama yang masuk merupakan elemen yang pertama keluar. Data data di dalam antrian dapat bertipe integral, real, record, dalam bentuk sederhana atau terstruktur. B.Saran Di harapkan agar dapat memahami dengan betul mengenai materi queue ini. Serta dapat mempraktikan sendiri dan juga menyelesaikan studi kasus lainnya