135
136
137 #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()
138 { 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() { if (kosong() == 0)
139 { 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";
140 } 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:
141 bersih(); break; case 5: cout << "Terimakasih, tekan enter untuk keluar"<< endl; case 6:; } getch();} while (pil != 5);} Compile dan perbaiki sampai benar Tampilan setelah di running Gambar 6.20 Hasil running Gambar 6.21 Hasil running
142 Buatlah program baru dengan cara file-new-source atau gunakan CTRL+N kemudian ketik source code
143 Penjelasan : Dimulai dengan terminator dan header flowchart , masukan fungsi nya didalam simbol prepation . lalu fungsi untuk variabel while(1), tampilkan pilihan push, pop, display, quit dan scanf. Lalu masuk dalam system (choice) untuk case1-4 ditambahkan default jika yang lain, untuk void push, if (top == (MAX - 1) maka tampilkan “Stack Overflow” jika tidak , maka tampilkan nilai yang masuk dan masukan nilainya dengan nilai sudah di urutkan top = top + 1; stack_arr[top] = pushed_item; sedangkan untuk pilihan void pop(). jika nilai (top == -1) maka tampilkan “Stack Overflow” jika buka itu maka tampilkan nilai yang dihapuskan dan di urutkan top = top - 1; lalu sedangkan void display() , masukan variabel int I, jika if(top == -1) maka tampikan “Stack Overflow” jika tidak, maka else {printf("\nStack elements :\n"); untuk tampilan for(i = top; i >=0; i--) printf("%d\n", stack_arr[i] ); kemudian diselesaikan dengan gethch();. #include <stdio.h> #include <stdlib.h> #include <conio.h> #define MAX 5 int top = -1; int stack_arr[MAX]; void push(); void pop(); void display(); int main() { int choice; while(1) { printf("\n1.Push\n"); printf("2.Pop\n"); printf("3.Display\n"); printf("4.Quit\n\n"); printf("Enter your choice : ");
144 scanf("%d",&choice); switch(choice) { case 1 : push(); break; case 2: pop(); break; case 3: display(); break; case 4: exit(1); default: printf("\nPILIHAN TIDAK TERSEDIA\n"); } } getch(); } void push() { int pushed_item; if(top == (MAX - 1)) printf("Stack Overflow\n"); else { printf("\nEnter the item to be pushed in stack : "); scanf("%d",&pushed_item);
145 top = top + 1; stack_arr[top] = pushed_item; } } void pop() { if(top == -1) printf("Stack Underflow\n"); else { printf("Popped element is : %d\n",stack_arr[top]); top = top - 1; } } void display() { int i; if(top == -1) printf("Stack is empty\n"); else { printf("\nStack elements :\n"); for(i = top; i >=0; i--) printf("%d\n", stack_arr[i] ); }}
146 Compile sampai benar Gambar 6.22 Struktur pemograman Gambar 6.23 Struktur pemograman
147 Gambar 6.24 Stuktur Pemograman Gambar 6.25 Hasil running
148 Buatlah program baru dengan cara file-new-source atau gunakan CTRL+N kemudian ketik source code programnnya seperti dibawah :
149 #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() { 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 : push(); break;
150 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("Enter data to be pushed (0-9999) : "); scanf("%d",&info); temp = (NODE *) malloc(sizeof(NODE)); if (temp == NULL) printf("\nMemory Allocation Failed"); else { temp->data = info; temp->link = top; top = temp;
151 printf("Node has been inserted at Top(Front) Successfully !!\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; printf("____[Stack]____\n"); while(temp != NULL) {
152 printf("\n__\n"); printf("|%4d|",temp->data); temp = temp->link; } } Compile sampai benar Gambar 6.26 Struktur pemograman
153 Gambar 6.27 Sturktur Progam Gambar 6.28 Stuktur Program Gambar 6.29 Stuktur Program
154 Tampilan running Gambar 6.30 Hasil running Gambar 6.31 Hasil running Gambar 6.32 Hasil runnin
155 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 First-Out (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
156
157 BAB VII QUEUE OLEH Haerani Ramli 07352211013 PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS TEKNIK UNIVERSITAS KHAIRUN TERNATE 2023
158 BAB VII QUEUE 7.1 Pendahuluan Queue atau antrian merupakan kumpulan elemen yang pengiasan dan penghampus elem yang di lakukan dari sisi atau gerbang yang berbeda beda. Pengisian dilakukan dari gerbang belakang dan penghapus gerbang depan. Hal ini menunjukan bahwa untuk queue mempunyai dua gerbang yaitu gerbang depan dan belakang. Dengan demikian dapat dilihat bahwa queue mempunyai sifat FIFO ( Frist in, Frist out ), yaitu elemen yang pertama masuk akan keluar pertama juga. Represnatsi queue dapa deklarasi dengan menggunakan array atau linked list represnatsi queue dengan array atau linked list. Represnatsi queue array ada penunjuk depan dan belakang yang digunakan untuk menunjukan 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 elemendan suatu queue . Operasi penghapusan elemen pada circular yang di hapus adalah selalu yang berada didepan sehingga penunjuk depan akan naik satu ( depan =1 ) jika depan lebih kecil dari maksimun elem array. Tetapi depan di atur menjadi satu ( depan =1 ) jika depan sama dengan maksimum elemen array.
159 7.2 Latihan Kegiatan praktikum A.Studi Kasus 1 Flowchart 7.2
160 Penjelasan : Dimulai dengan terminator dan header lalu dimasukan variabel yang di inginkan. Memasuki decision While untuk melanjutkan case yang diinginkan atau tidak sama sekali dan diberikan case berupa ( enqueu, dequeue. Display, dan exit ) jika tidak maka pilihan tidak tersedia dan ditutupi 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() {
161 int choice; 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++ switch(choice) { case 1 : enqueue(); break; case 2 : dequeue();
162 break; case 3 : display(); break; case 4 : exit(1); default: printf("PILIHAN TIDAK TERSEDIA\n"); } } getch(); } void enqueue() { int added_item; if (rear == MAX - 1) printf("Queue Overflow\n");
163 else { if (front == -1) front = 0; printf("input thr element for adding in queue : "); scanf("%d", &added_item); rear = rear = 1; queue_arr[rear] = added_item ; } } void dequeue() { if (front == -1 || front > rear) { printf("Queue Underflow\n"); return ; }
164 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 { printf("Queue is :\n"); for(i = front; i <= rear; i++) printf("%d",queue_arr[i]); printf("\n");
165 }} Compile sampai benar Gambar 7.1 Struktur Program Gambar 7.2 Struktur Program
166 Gambar 7.3 Struktur Program Tampilan setelah di running Gambar 7.4 Struktur Program Gambar 7.5 Struktur Program
167 B. Studi Kasus 2 Flowchart studi kassus
168 Penjelasan : Dimulai dengan terminator dengan header, lalu dilanjutkan dengan menginput variabel queue. Setelah masuk kedalam sistem atau proses switch untuk memasuki kasus atau pilihan yang dui berikan (enqueue, dequeue, display, exit dan default jika pesan tidak di temukan) lalu di tutup dengan gethch unutk penyelesaianya #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() { 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);
169 switch(choice) { case 1 : enqueue(); break; case 2: dequeue(); break; case 3: 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) printf("\nMemory Allocation Failed");
170 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() { NODE *temp; int info; if (front == NULL) { printf(" Underflow!!!"); } else { temp = front; info = front->data;
171 if (front == rear) { rear = NULL; } front = front->link; temp->link = NULL; printf(" Deleted Node(From Front)with the Data: %d\n", info); 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"); } }
172 Compile sampai benar Gambar 7.6 Hasil Running Gambar 7.6 Hasil Running
173 7.3 Kesimpulan dan Saran A. Kesimpulan Queue (antrian) adalah salah satu list linear dan struktur data yang beroperasi dengan cara FIFO (First in, Frist out) yaitu elemen pertama keluar. Data data di dalam antrian dapat bertipe integral, real, record, dalam bentuk sederhana atau terstruktur B. Saran Di harapka agar dapat memahami dengan betul mengenai materi queue ini. Serta dapat mempraktekan sendiri dan juga meyelesaiakan studi kasus lainnya.
174
175 DAFTAR PUSTAKA Muhammad Sholeh, Rochmat Haryanto, A. P. (2013). Panduan Belajar Pemgrograman Terstruktur.