MODUL 6 QUEUE
Pada tabel berikut ditunjukkan kode queue.cpp.
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
//definisi tipe data queue dan node struct node {
int data;
struct node *next;
};
typedef struct node node;
struct queue { int count;
node *front;
node *rear;
};
typedef struct queue queue;
//definisi fungsi queue createQueue(void);
int enqueue(int data, queue *myQueue);
node *createNode(void);
int dequeue(queue *myQueue);
void destroy(queue *myQueue);
void display(queue myQueue);
//bagian utama program void main(void){
int choice,num, success;
queue myQueue;
myQueue = createQueue();
while(1){
printf("\n\t\t MENU\n1. Enqueue\n2. Dequeue\n3. Display\n4. Exit\n");
printf("\n\tEnter your choice: ");
scanf("%d",&choice);
switch(choice){
case 1:
printf("\nElement to be enqueued:");
scanf("%d",&num);
success = enqueue(num, &myQueue);
if (success == 0){
printf("operasi enqueue gagal");
getch();
} break;
case 2:
num = dequeue(&myQueue);
if (num != -99)
printf("\nElement dequeued: %d ",num);
getch();
break;
case 3:
display(myQueue);
break;
case 4:
destroy(&myQueue);
exit(1);
default: printf("\nInvalid Choice\n"); break;
} } } //fungsi
queue createQueue(void){
queue myQueue;
myQueue.count = 0;
myQueue.front = NULL;
myQueue.rear = NULL;
return(myQueue);
}
int enqueue(int data, queue *myQueue){
}
node *createNode(void){
node *newPtr;
newPtr = (node *)malloc(sizeof(newPtr));
return(newPtr);
}
int dequeue(queue *myQueue){
}
void destroy(queue *myQueue){
node *temp;
while (myQueue->count != 0){
temp = myQueue->front;
myQueue->front = myQueue->front->next;
free(temp);
}
myQueue->count = 0;
myQueue->front = NULL;
myQueue->rear = NULL;
}
void display(queue myQueue){
node *temp;
temp = myQueue.front;
printf("elemen queue dari front ke rear : \n");
while(temp){
printf("%d\n", temp->data);
temp = temp->next;
} }
1. Modifikasilah queue.cpp sehingga operasi enqueue dan dequeue berjalan dengan benar. Algoritma enqueue ditunjukkan pada tabel berikut.
1.
if (queue full) 1. success = 0 2. end if3. allocate (newPtr) 4. newPtr->data = data
5.
newPtr->next = NULL6.
if (queue empty)1.
queue.front = newPtr 7. else1. set next dari rear ke newPtr 8. end if
9. set queue rear ke newPtr 10. increment queu count 11. success = 1;
12. return(success)
Algoritma operasi dequeue ditunjukkan pada tabel berikut
1.
if (queue empty) 2. return(-99) 3. end if4. allocate (newPtr) 5. newPtr->data = data
6.
newPtr->next = NULL7.
if (queue empty)8.
queue.front = newPtr 9. else10. set next dari rear ke newPtr 11. end if
12. set queue rear ke newPtr 13. increment queu count 14. success = 1;
i. return(success)