Program Queue (antrian) C++

Posted by mahfuz On Jumat, 01 April 2011 0 komentar
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!!

0 komentar:

Posting Komentar