Queue atau antrian merupakan suatu kumpulan data yang penambahan elemennya hanya bisa dilakukan pada suatu ujung atau rear, dan penghapusan atau pengambilan elemen dilakukan lewat ujung yang lain (front).
Contoh program Queue:
Memasukkan, menghapus, serta mencetak kembali data yang dimasukkan:
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
#define MAX 50
char *p[MAX], *pop(void);
int spos = 0;
int rpos = 0;
void insert(void), push(char *q), print(void), clear(void);
void insert(void)
{
char s[50], *p;
do {
printf("spos %d: ", spos+1);
gets(s);
if(*s==0) {
break;
}
p = (char *) malloc(strlen(s)+1);
if(!p) {
printf("Out of memory.\n");
return;
}
strcpy(p, s);
if(*s) {
push(p);
}
} while(*s);
}
void print(void)
{
int t;
for(t=rpos; t < spos; ++t)
printf("%d. %s\n", t+1, p[t]);
}
void clear(void)
{
char *p;
if((p=pop())==NULL) {
return;
}
printf("%s\n", p);
}
void push(char *q)
{
if(spos==MAX) {
printf("List Full\n");
return;
}
p[spos] = q;
spos++;
}
char *pop(void)
{
if(rpos==spos) {
printf("No more.\n");
return NULL;
}
rpos++;
return p[rpos-1];
}
int main(void)
{
char s[50];
register int t;
for(t=0; t < MAX; ++t) {
p[t] = NULL;
}
while(1) {
printf("Insert(I), Print(P), Clear(C), Quit(Q): ");
gets(s);
*s = toupper(*s);
switch(*s) {
case 'I':
insert();
break;
case 'P':
print();
break;
case 'C':
clear();
break;
case 'Q':
exit(0);
}
}
return 0;
}
Selamat mencoba!!
Contoh program Queue:
Memasukkan, menghapus, serta mencetak kembali data yang dimasukkan:
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
#define MAX 50
char *p[MAX], *pop(void);
int spos = 0;
int rpos = 0;
void insert(void), push(char *q), print(void), clear(void);
void insert(void)
{
char s[50], *p;
do {
printf("spos %d: ", spos+1);
gets(s);
if(*s==0) {
break;
}
p = (char *) malloc(strlen(s)+1);
if(!p) {
printf("Out of memory.\n");
return;
}
strcpy(p, s);
if(*s) {
push(p);
}
} while(*s);
}
void print(void)
{
int t;
for(t=rpos; t < spos; ++t)
printf("%d. %s\n", t+1, p[t]);
}
void clear(void)
{
char *p;
if((p=pop())==NULL) {
return;
}
printf("%s\n", p);
}
void push(char *q)
{
if(spos==MAX) {
printf("List Full\n");
return;
}
p[spos] = q;
spos++;
}
char *pop(void)
{
if(rpos==spos) {
printf("No more.\n");
return NULL;
}
rpos++;
return p[rpos-1];
}
int main(void)
{
char s[50];
register int t;
for(t=0; t < MAX; ++t) {
p[t] = NULL;
}
while(1) {
printf("Insert(I), Print(P), Clear(C), Quit(Q): ");
gets(s);
*s = toupper(*s);
switch(*s) {
case 'I':
insert();
break;
case 'P':
print();
break;
case 'C':
clear();
break;
case 'Q':
exit(0);
}
}
return 0;
}
Selamat mencoba!!
0 komentar:
Posting Komentar