Mari Putus Mata Rantai Penyebaran Virus Covid-19 dengan Tetap Jalankan Protokol Kesehatan Jaga Jarak dan Tetap Pakai Masker Sesuai Standar Pemerintah, Dan Selalu Bawa Hands Sanitizer Saat Keluar Rumah. Tetap Jaga Kesehatan dengan Olahraga dan Makan-makanan yang Sehat info lebih lanjut www.covid19.go.id

Operasi Shift dengan Queue di C++

Sebelum kita masuk kepada dalam bentuk programnya lebih baik kita ketahui dahulu apa itu Queue.

Merupakan konsep First In First Out (FIFO) data yang disimpan pertama akan diambil lebih
dahulu. Implementasi queue dapat menggunakan array atau linked list,pada implementasi queue dengan array, kemungkinan queue bisa penuh. Pada implementasi queue dengan linked list,
queue tidak pernah penuh.

Queue merupakan konsep penyimpanan item secara FIFO, item yang masuk dahulu akan keluar lebih  dahulu. Elemen pada Queue terdiri dari : item yang disimpan dipenyimpan, penunjuk depan (front), penunjuk belakang (rear) dan jumlah item (count) Operasi pada Queue : ENQUEUE dan
DEQUEUE. Operasi tambahan pada Queue : Inisialisasi, Penuh, Kosong.

baik pada saat ini saya akan membuat program sesuai judul di atas.

Berikut adalah Source Codenya:


#include <stdio.h>
#include <math.h>
#define MAX 10


typedef int Itemtype;

typedef struct
{
    Itemtype item[MAX];
    int front;
    int rear;
    int count;
} Queue;

void Init(Queue* q)
{
    q->count = 0;
    q->front = 0;
    q->rear = 0;
}

int isFull(Queue* q)
{
    return q->count == MAX;
}

int isEmpty(Queue* q)
{
    return q->count == 0;
}

void Enqueue(Queue* q, Itemtype x)
{
    if (isFull(q))printf("Queue penuh\n");
    else
    {
        q->item[q->rear] = x;
        q->rear = ++q->rear % MAX;
        q->count++;
    }
}

Itemtype Dequeue(Queue* q)
{
    Itemtype tmp = -1;
    if (isEmpty(q))printf("Queue is full\n");
    else
    {
        tmp = q->item[q->front];
        q->front = ++q->front % MAX;
        q->count--;
    }
    return tmp;
}

Itemtype OpShift(Queue* q, int n, int s)
{
    Itemtype tmp = 0;
    while (n > 0)
    {
        Enqueue(q, n % 2);
        n /= 2;
    }
    for (int i = 0; i < s; i++)
        Enqueue(q, Dequeue(q));
    int e = 0;
    while (!isEmpty(q))
    {
        tmp += Dequeue(q) * pow(2.0, e);
        e++;
    }
    return tmp;
}
void header()
{
  printf("\n");
  printf("\t------------------------------------------------\n");
  printf("\t        -Program Operasi Shit Dengan Queue-       \n");
  printf("\t------------------------------------------------\n\n\n");
}
int main()
{
    header();
    Queue queue;
    Init(&queue);
    int bil, shift;
    printf("\tMasukkan bilangan desimal  : ");
    scanf("%d", &bil);
    printf("\tMasukkan jumlah shift      : ");
    scanf("%d", &shift);
    printf("\tBilangan desimal setelah shift adalah : %d\n\n", OpShift(&queue, bil, shift));
    return 0;
}


Hasil Output nya seperti ini



Post a Comment

2 Comments

  1. wah, gimana sih caranya memahami queue bang. Tolong ajarin saya!

    ReplyDelete
  2. kaliankan udah mahasiswa cari aja di google

    ReplyDelete