Selasa, 07 Februari 2012

QUEUE - C++

#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
#include <conio.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);

//memasukan queue....
void insert(void)
{
  char s[50], *p;
  printf("\n================== [ INSERT ] =================\n\n");  
  do {
    printf("Queue %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);
}


//menampilkan queue....
void print(void)
{
  flushall();
  int t;
  printf("\n================== [  VIEW  ] =================\n");
  for(t=rpos; t < spos; ++t)
    printf("\n%d. %s\n", t+1, p[t]);
}


//menghapus queue....
void clear(void)
{
 
  flushall();    
  char *p;
  printf("\n================= [ DELETING ] ================\n");
  if((p=pop())==NULL) {
     return;
  }
  printf("\n%s deleted\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];

}



//program utama....
int main(void)
{
  char s[50];
  register int t;
  for(t=0; t < MAX; ++t) {
     p[t] = NULL;
  }
  while(1)
  {    
    printf("\n===============================================");
    printf("\n================== [ QUEUE ] ==================");
    printf("\n===============================================\n");
    printf("I    = Insert Queue\n");
    printf("P    = Print  Queue\n");
    printf("D    = Delete Queue\n");
    printf("Q    = Quit\n");
    printf("\n===============================================\n");
    printf("\nMasukan karakternya : ");gets(s);
    *s = toupper(*s);
    switch(*s) {
      case 'I':
        insert();
        break;
      case 'P':
        print();
        break;
      case 'D':
        clear();
        break;
      case 'Q':
        exit(0);
    }
  }
  return 0;
}

Tidak ada komentar: