™[]Sumber Pembuat,Author,Created,dll sudah ada Di dalam Rarnya[]™

™[]Klik Judul postingan untuk melihat Isi selengkapnya!![]™

Kamis, 17 November 2011

0 Program Queue (antrian) C++

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