Tugas Queue


#include <stdio.h>
#include <conio.h>
#include <iostream.h>
#define MAX 6

typedef struct
{
   int data [MAX];
   int head;
   int tail;
}queue;
queue antrian;

void create()
{
                antrian.head = antrian.tail = -1;
}

int isempty()
{
                if (antrian.tail == -1)
   {
                return 1;
   }
   else
   {
                return 0;
   }
}

int isfull()
{
                if (antrian.tail == MAX-1)
   {
                return 1;
   }
   else
   {
                return 0;
   }
}

void enqueue (int data)
{
                if (isempty() == 1)
   {
                antrian.head = antrian.tail = 0;
      antrian.data[antrian.tail] = data;
      printf ("%d, Sudah Masuk!", antrian.data[antrian.tail]);

      void tampil();
      {
                int i;
         if (isempty() == 0)
         {
                for (i=antrian.head; i<=antrian.tail; i++)
            {
                printf (" %d ", antrian.data[i]);
            }
         }
         else
         {
                printf ("\n**** QUEUE IS EMPTY ****\n");
         }
      }
   }
   else if (isfull() == 0)
   {
                antrian.tail++;
      antrian.data[antrian.tail] = data;
      printf ("%d , Sudah Masuk!", antrian.data[antrian.tail]);
   }
   else
   {
                if (isfull() == 1)
      {
                cout << "\n\n**** QUEUE IS FULL, data TIDAK dapat masuk ****";
      }
   }
   gotoxy(25,8); cout << "PRESS any key for back to MENU";
}

void dequeue()
{
                if (isempty() == 1)
   {
                cout << "\n**** ERROR :: QUEUE IS EMPTY ****";
   }
   else if (isempty() == 0)
   {
                int i;
      int e = antrian.data[antrian.head];
      for(i=antrian.head; i<=antrian.tail-1; i++)
      {
                antrian.data[i] = antrian.data[i+1];
      }
      antrian.tail--;
      cout << "\n\nData Yang Keluar => " << e;
   }
   gotoxy(25,8); cout << "PRESS any key for back to MENU";
}

void clear()
{
                antrian.head = antrian.tail = -1;
   printf ("\n\n**** DATA CLEAR ****");
   gotoxy(25,8); cout << " PRESS any key for back to MENU";
}

void tampil()
{
                int i;
   if (isempty() == 0)
   {
                cout << "Data Yang ada Dalam QUEUE : " << endl << endl;
      for (i=antrian.head; i<=antrian.tail; i++)
      {
                printf ("| %D |", antrian.data[i]);
      }
   }
   else
   {
                printf ("\n**** QUEUE IS EMPTY ****\n");
   }
   gotoxy(25,8); cout  << " PRESS any key for back to MENU";
}

void main()
{
                int pil;
   int data;
   create();
   do
   {
                clrscr();
      gotoxy(25,2); cout << "========MENU PILIHAN========" << endl << endl;
      gotoxy(25,4); cout << "============================" << endl << endl;
      gotoxy(30,6); cout << " 1. ENQUEUE " << endl;
      gotoxy(30,7); cout << " 2. DEQUEUE " << endl;
      gotoxy(30,8); cout << " 3. TAMPILAN " << endl;
      gotoxy(30,9);cout << " 4. CLEAR " << endl;
      gotoxy(30,10); cout << " 5. KELUAR " << endl;
      gotoxy(25,12); cout << "============================" << endl;
      gotoxy(25,14); cout << " Masukkan Pilihan Anda => "; cin >> pil;

      switch (pil)
      {
                case 1:
                clrscr();
            printf ("\n\n Masukkan Data => "); scanf ("%d", &data);
            enqueue (data);
            break;

         case 2:
                clrscr();
            dequeue();
            break;

         case 3:
                clrscr();
            cout << endl;
            tampil ();
            break;

         case 4:
                clrscr();
            clear();
            break;

         case 5:
                clrscr();
            gotoxy(25,8); cout << "**** TERIMA KASIH ****" << endl;
            break;

      }
      getch();
   } while (pil!=5);
}

Tidak ada komentar:

Posting Komentar