Stack merupakan struktur data linear yang beroperasi seperti tumpukan, yaitu Last In First Out (LIFO) dimana elemen yang terakhir masuk (berada di paling atas) akan terlebih dahulu diproses lalu dikeluarkan dari stack.
sumber: studytonight |
1. Memanggil fungsi lain dalam fungsi main (utama).
fungsi viewItem() |
memanggil fungsi viewItem() |
2. Membuat bentuk prefix dan postfix dari suatu infix.
Prefix dan postfix digunakan agar komputer lebih mudah dan cepat menyelesaikan perhitungan matematika.
Contoh 1
Infix : A - [ B / C + ( D % E * F ) ] * HPrefix : - A * + / B C * % D E F H
Postfix : A B C / D E % F * + H * -
Contoh 2
Infix : A / B - C | D * E - A * C
Prefix : | - / A B C - * D E * A C
Postfix : A B / C - D E * A C * - |
Contoh penggunaan konsep queue yaitu :
Membuat program antrian Bank.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <windows.h>
struct Node {
int q;
struct Node *next;
} *head, *tail, *curr;
typedef struct Node nd;
void insertQ(int n){
curr = (nd*) malloc(sizeof(nd));
curr->q = n;
if(head == NULL){
head = tail = curr;
tail->next = NULL;
}
else{
tail->next = curr;
tail = curr;
tail->next = NULL;
}
}
void deleteQ(){
if(head != NULL){
curr = head;
head = curr->next;
free(curr);
}
}
void viewQ(){
int i = 1;
curr = head;
while(curr != NULL){
printf("Antrian ke %d : no. %d\n", i, curr->q);
i++;
curr = curr->next;
}
}
void printMenu(){
puts("BANK PASTI UNTUNG");
puts("=================");
puts("1. Ambil Antrian");
puts("2. Melayani Customer");
puts("3. Lihat Antrian");
puts("4. Keluar");
puts("");
printf("Masukkan Pilihan Anda : ");
}
int main(){
int p;
srand(time(NULL));
int a = rand();
int b;
int check = 0;
do{
printMenu();
scanf("%d",&p); fflush(stdin);
printf("\n");
switch(p){
case 1:
printf("Anda berada pada nomor antrian : ");
if(check == 0){
printf("%d\n",a);
b = a+1;
insertQ(a);
check = 1;
}
else{
printf("%d\n",b);
insertQ(b);
b++;
}
getchar();
system("cls");
break;
case 2:
if(head == NULL)
puts("Tidak ada antrian");
else {
curr = head;
printf("Melayani Customer dengan nomor antrian : %d\n",curr->q);
deleteQ();
}
getchar();
system("cls");
break;
case 3:
system("cls");
if(head == NULL)
puts("Tidak ada antrian");
else
viewQ();
getchar();
system("cls");
break;
case 4:
while(head != NULL)
deleteQ();
system("cls");
break;
}
} while (p != 4);
return 0;
}
Comments
Post a Comment