Jun 142010
 

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

—————————begin———————–

#ifndef queue_H
#define queue_H

#include<stdio.h>
#include<iostream.h>
#include<stdlib.h>
#include<malloc.h>
#include<conio.h>

#define nil NULL
#define info(P) (P)->info
#define next(P) (P)->next
#define firstQueue(Q) ((Q).firstQueue)
#define 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;
}

————————————————end——————————————————–

untuk lebih mudah, silakan

download disini.

Sorry, the comment form is closed at this time.