Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdlib.h>
- #include <stdbool.h>
- #include <stdio.h>
- /* Struktur Node */
- typedef struct pqueueNode_t {
- int data;
- int priority;
- struct pqueueNode_t *next;
- } PQueueNode;
- /* Struktur ADT PriorityQueue menggunakan Linked List */
- // Prioritas default: nilai minimum
- typedef struct pqueue_t {
- PQueueNode *_top;
- unsigned _size;
- } PriorityQueue;
- void pqueue_init(PriorityQueue *pqueue);
- bool pqueue_isEmpty(PriorityQueue *pqueue);
- void pqueue_push(PriorityQueue *pqueue, int value, int prior);
- void pqueue_pop(PriorityQueue *pqueue);
- int pqueue_top(PriorityQueue *pqueue);
- void pqueue_init(PriorityQueue *pqueue)
- {
- pqueue->_top = NULL;
- pqueue->_size = 0;
- }
- bool pqueue_isEmpty(PriorityQueue *pqueue) {
- return (pqueue->_top == NULL);
- }
- void pqueue_push(PriorityQueue *pqueue, int value, int prior)
- {
- PQueueNode *temp = pqueue->_top;
- PQueueNode *newNode = (PQueueNode*) malloc (sizeof(PQueueNode));
- newNode->data = value;
- newNode->priority=prior;
- newNode->next = NULL;
- if (pqueue_isEmpty(pqueue)) {
- pqueue->_top = newNode;
- return;
- }
- if (prior > pqueue->_top->priority) {
- newNode->next = pqueue->_top;
- pqueue->_top = newNode;
- }
- else {
- while ( temp->next != NULL && temp->next->priority > prior)
- temp = temp->next;
- newNode->next = temp->next;
- temp->next = newNode;
- }
- }
- void pqueue_pop(PriorityQueue *pqueue)
- {
- if (!pqueue_isEmpty(pqueue)) {
- PQueueNode *temp = pqueue->_top;
- pqueue->_top = pqueue->_top->next;
- printf("%d\n",temp->data);
- free(temp);
- }
- }
- int pqueue_top(PriorityQueue *pqueue) {
- if (!pqueue_isEmpty(pqueue))
- return pqueue->_top->data;
- else return 0;
- }
- int main(int argc, char const *argv[])
- {
- PriorityQueue myPque;
- pqueue_init(&myPque);
- int testCase,i;
- char commandList0[]="MASUK",commandList1[]="LAYANI";
- scanf("%d",&testCase);
- for(i=0;i < testCase;i++){
- char command[7];
- scanf("%s",command);
- if(strcmp(command , commandList1)==0)
- pqueue_pop(&myPque);
- else if(strcmp(command , commandList0)==0){
- int Data,Priority;
- scanf("%d %d",&Data,&Priority);
- pqueue_push(&myPque, Data, Priority);
- }
- }
- printf("HORE\n");
- puts("");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement