Seputar IT dan Kajian Islam

Selasa, 10 Maret 2020

Queueu


A. Pengertian Queue
- Queue Merupakan struktur data dengan konsep First In First Out (FIFO)
- Data yang disimpan pertama akan diambil/dikeluarkan terlebih 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.

B. Pengertian Bilangan Biner
Bilangan biner merupakan jenis bilangan yang hanya terdiri dari 2 jenis angka, yakni 0 dan 1 

C. Operasi Shift pada Biner?
operasi shift pada bahasa C/C++ adalah operasi yang akan menggeser posisi bit dalam suatu variabel ke kiri/kanan sebanyak n kali. Salah satu contoh penggunan operasi shift adalah sebagai berikut :
misalnya,  nilai variabel x adalah 10, maka bilangan binernya adalah 1010. Apabila kita akan menggunakan shift right “>>” sebanyak 2. Maka nilai bit dari variabel yang semula adalah 1010 maka akan menjadi 0010. Karena telah terjadi pergeseran bit sebanyak 2 kali ke kanan. Dapat dituliskan sebagai berikut :
x = 10 (desimal) = 1010 (biner)
x >> 2 = 0010 (biner) = 2 (desimal)
kemudian bagaimana mengimplementasikan program bahasa C++ untuk melakukan shift dengan menggunakan queue, berikut pogramnya :

Program Shift Biner

#include
#include  
#define MAX 10

using namespace std;

typedef int Itemtype;

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

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

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

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

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

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

Itemtype Shift(Queue* q, int n, int s)
{
 Itemtype tmp = 0;
 // proses merubah desimal menjadi biner
 while (n > 0)
 {

 Enqueue(q, n % 2);
 n = n/2 ;
 }

 // proses mengeluarkan angka sebanyak jumlah shift
 for (int i = 0; i < s; i++){
 Dequeue(q);
 }

 //proses merubah biner ke desimal
 int e = 0;
 while (!Kosong(q))
 {
 tmp += Dequeue(q) * pow(2.0, e);
 e++;
 }
 return tmp;
}


int main()
{
 Queue queue;
 Inisialisasi(&queue);
 int bil, shift;
 cout << "\t\tMasukkan bilangan desimal  : ";
 cin >> bil;
 cout << "\t\tMasukkan jumlah shift      : ";
 cin >> shift;
 cout << "\t\tBilangan desimal setelah shift adalah : ";
 std::cout << Shift(&queue, bil, shift);
 return 0;
}

0 komentar:

Posting Komentar