Anda di halaman 1dari 5

Operasi Queue

Antrian (queue) merupakan kumpulan data dengan penambahan data (elemen)


hanya melalui satu sisi, yaitu sisi belakang (tail/rear) dan penghapusan data
(elemen) hanya melalui sisi depan (head/front). Queue atau antrian merupakan
salah satu struktur data yang memiliki sistem kerja pertama masuk maka akan
menjadi yang pertama keluar (FIFO = First In First Out), seperti halnya antrian yang
ada pada dunia nyata. Antrian banyak diaplikasikan dalam berbagai hal. Misalnya
dalam penjadwalan di CPU, pengaturan kerja printer jaringan, dan lain-lain.
dalam artikel ini, tidak akan saya jelaskan bagaimana program ini bekerja, silakan
anda pelajari sendiri source code ini. dan jika anda sampai ke artikel ini karena
mendapat tugas dalam sebuah mata kuliah, saya mohon, jangan hanya copy-paste
tapi pelajarilah. karena itu jauh lebih bermanfaat, jauh lebih baik.
berikut adalah contoh source code sederhana queue menggunakan bahasa c++ :
file :queue.h
#ifndef queue_H
#define queue_H
#include<stdio.h>
#include<iostream.h>
#include<stdlib.h>
#include<malloc.h>
#include<conio.h>
#define
#define
#define
#define
#define

nil NULL
info(P) (P)->info
next(P) (P)->next
firstQueue(Q) ((Q).firstQueue)
lastQueue(Q) ((Q).lastQueue)

typedef int infotype;


typedef struct tElmtQueue *address;
typedef struct tElmtQueue
{
infotype info;
address next;
}ElmtQueue;
typedef struct
{
address firstQueue;
address lastQueue;

} Queue;
bool queueEmpty(Queue Q);
void CreateQueue(Queue *Q);
void BacaQueue(infotype *x);
void TulisQueue(Queue Q);
address Alokasi(infotype x);
void Dealokasi(address P);
void Enqueue(Queue *Q,infotype x);
void Dequeue(Queue *Q);
bool queueEmpty(Queue Q)
{
return ((firstQueue(Q) == nil)&&(lastQueue(Q) == nil));
}
void CreateQueue(Queue *Q)
{
firstQueue(*Q)=nil;
lastQueue(*Q)=nil;
}
void BacaQueue(infotype *x)
{
printf(\n\nMasukkan data: );scanf(%d,&(*x));
}
void TulisQueue(Queue Q)
{
address P;
P=firstQueue(Q);
printf(Data Queue : );
while(P!=nil)
{
printf(%d ,info(P));
P=next(P);
}
}
address Alokasi(infotype x)
{
address P;
P=(address)malloc(sizeof(ElmtQueue));
if (P!=nil)
{
info(P)=x;
next(P)=nil;

}
return P;
}
void Dealokasi(address P)
{
free(P);
}
void Enqueue(Queue *Q,infotype x)
{
address P;
P=Alokasi(x);
if(queueEmpty(*Q))
{
firstQueue(*Q)=P;
lastQueue(*Q)=P;
}
else
{
next(lastQueue(*Q))=P;
lastQueue(*Q)=P;
}
printf(angka %d dimasukkan (enqueue)\n,x);
}
void Dequeue(Queue *Q)
{
address P;
P=firstQueue(*Q);
if(!queueEmpty(*Q))
{
if(P==lastQueue(*Q))
{
Dealokasi(P);
firstQueue(*Q)=nil;
lastQueue(*Q)=nil;
}
else
{
firstQueue(*Q)=next(P);
Dealokasi(P);
}
}
printf(\nangka pertama dlm queue terhapus (dequeue)\n\n);

}
#endif
end

file:testqueue.cpp
begin-

#include queue.h
#include stdio.h
#include iostream.h
main(){
Queue Q;
infotype x;
CreateQueue(&Q);
BacaQueue(&x);
Enqueue(&Q,x);
TulisQueue(Q);
BacaQueue(&x);
Enqueue(&Q,x);
TulisQueue(Q);
BacaQueue(&x);
Enqueue(&Q,x);
TulisQueue(Q);
BacaQueue(&x);
Enqueue(&Q,x);
TulisQueue(Q);
Dequeue(&Q);
TulisQueue(Q);

cout<<\n\nby code4769 <<endl;


}

Anda mungkin juga menyukai