Struktur Data : Algoritma Queue Non Circular & Algoritma Circular

Posted by

Struktur Data : Algoritma Queue Non Circular
Program UASQueueNonCircular;
uses crt;

const Nmax = 5;

type Queue = record
           isi  : array[1..Nmax] of integer;
           head : integer;
           tail : integer;
     end;

function QueueKosong (Q : Queue) : boolean;
     var
        kosong : boolean;
     begin
        if (Q.head = 0) AND (Q.tail = 0) then
           kosong := true
        else
           kosong := false;

        QueueKosong := kosong;
     end;

function QueuePenuh (Q : Queue) : boolean;
     var
        penuh : boolean;
     begin
        if (Q.head = 1) AND (Q.tail = Nmax) then
           penuh := true
        else
           penuh := false;

        QueuePenuh := penuh;
     end;

procedure ADD (var Q : Queue; angka : integer);
     begin
        if not QueuePenuh(Q) then
           if QueueKosong(Q) then
              begin
                   Q.head := 1;
                   Q.tail := 1;
                   Q.isi[Q.tail] := angka;
              end
           else
              begin
                   Q.tail := Q.tail+1;
                   Q.isi[Q.tail] := angka;
              end;
     end;

procedure REMOVE (var Q : Queue; var x : integer);
     var
        i : integer;
     begin
         if not QueueKosong(Q) then
            if (Q.head = 1) AND (Q.tail = 1) then
               begin
                  Q.head := 0;
                  Q.tail := 0;
               end
            else
               begin
                  x := Q.isi[Q.head];
                  for i := 1 to Q.tail do
                      begin
                           Q.isi[i-1] := Q.isi[i];
                      end;

                      Q.tail := Q.tail - 1;
               end;


     end;

procedure tampil(Q : Queue);
   var
      i : integer;
   begin
      for i := 1 to 5 do
          begin
               write(Q.isi[i], ' ');
          end;
          writeln;
   end;

var
   Q : Queue;
   x,i : integer;
begin
   tampil(Q);
            ADD(Q,2);
   tampil(Q);
            ADD(Q,3);
   tampil(Q);
            ADD(Q,5);
   tampil(Q);
            ADD(Q,6);
   tampil(Q);
            ADD(Q,1);
   tampil(Q);
            REMOVE(Q,x);


   writeln('Nilai X : ', x);
   writeln('Tail : ', Q.tail);
   writeln('Head : ', Q.head);
   readln;
end.
Struktur Data : Algoritma Queue Non Circular
program CircularQueue;

const NMax = 5;

{deklarasi tipe data queue}
type queue = record
isi : array[1..NMax] of integer;
head    : integer;
        tail    : integer;
     end;

{fungsi untuk mengecek queue kosong}
function IsEmpty(q : queue) : boolean;
var empty : boolean;
begin
{ketika head dan tail sama - sama 0}
if (q.head=0) AND (q.tail=0) then
empty := true
else
empty := false;

IsEmpty := empty;
end;

{fungsi untuk mengecek queue penuh}
function IsFull(q : queue) : boolean;
var full : boolean;
begin
{ketika head=1 dan tail berada pada posisi terakhir}
if(q.head=1) AND (q.tail=NMax) then
full := true

{ketika tail berada didepan head, tail dan headnya bertemu}
else
                    if (q.tail=q.head-1) then
full := true
                    else
full := false;

IsFull := full;
end;

{fungsi untuk mengecek hanya satu antrian yang tersisa}
function HT1(q : queue) : boolean;
var isisatu : boolean;
begin
{ketika head = tail berarti hanya ada satu antrian yang tersisa}
if (q.tail=q.head) then
isisatu := true
else
isisatu := false;

HT1 := isisatu;
end;

{fungsi untuk mengecek apakah tail < NMax}
function TailLessThanNMax(q:queue) : boolean;
var less : boolean;
begin
if (q.tail<NMax) then
less := true
else
less := false;

TailLessThanNMax := less;
end;

{fungsi untuk mengecek apakah head < NMax}
function HeadLessThanNMax(q:queue) : boolean;
var less : boolean;
begin
if (q.head<NMax) then
less := true
else
less := false;

   HeadLessThanNMax := less;
end;

{prosedur untuk menambahkan queue}
procedure Add(var q:queue;angka:integer);
begin
{mengecek apakah tidak queue tidak penuh}
if not IsFull(q) then
begin
{dari queue kosong menjadi berisi 1 antrian}
if IsEmpty(q) then
  begin
q.head:=1;
q.tail:=1;
q.isi[q.tail] := angka;
  end
else
{ketika tail<NMax maka penambahan tail seperti biasa tail++}
if TailLessThanNMax(q) then
  begin
q.tail := q.tail+1;
q.isi[q.tail] := angka;
  end

{ketika tail = NMax maka tail balik menjadi 1}
else
   begin
q.tail := 1;
q.isi[q.tail] := angka;
   end;
end;
end;

{prosedur untuk menghapus queue}
procedure Remove(var q:queue; var angka:integer);
begin
{mengecek apakah queue tidak kosong}
if not IsEmpty(q) then
begin
{ketika hanya 1 antrian yang tersisa, ubah queue menjadi 0}
if HT1(q) then
begin
angka := q.isi[q.head];
q.tail := 0;
q.head := 0;
end

else
{ketika head < NMax, head++}
if HeadLessThanNMax(q) then
begin
angka := q.isi[q.head];
                                        Q.isi[Q.head]:=0;
q.head := q.head +1;
end
{ketika head = NMax, head menjadi 1}
else
begin
angka := q.isi[q.head];
                                        Q.isi[Q.head] := 0;
q.head := 1;
end;
end;
end;

procedure Tampil(Q : Queue);
    var
       i : integer;
    begin
       for i:=1 to Nmax do
          begin
               write(Q.isi[i],' ');
          end;
          writeln;
    end;


var q:queue; x,i:integer;
begin

        Tampil(Q);
   add(q,1);
        Tampil(Q);
   add(q,2);
        Tampil(Q);
   add(q,3);
        Tampil(Q);
   add(q,4);
        Tampil(Q);
   remove(q,x);
        Tampil(Q);
   remove(q,x);
        Tampil(Q);
   remove(q,x);
        Tampil(Q);
   add(q,6);
        Tampil(Q);
   add(q,7);
        Tampil(Q);
   remove(q,x);
        Tampil(Q);
   remove(q,x);
        Tampil(Q);
   remove(q,x);
        Tampil(Q);
   add(q,8);
        Tampil(Q);


writeln('head : ',q.head);
writeln('tail : ',q.tail);

readln;

end.

Download Disini


Blog, Updated at: 23:35:00

1 comments:

  1. Struktur Data : Algoritma Queue Non Circular And Algoritma Circular >>>>> Download Now

    >>>>> Download Full

    Struktur Data : Algoritma Queue Non Circular And Algoritma Circular >>>>> Download LINK

    >>>>> Download Now

    Struktur Data : Algoritma Queue Non Circular And Algoritma Circular >>>>> Download Full

    >>>>> Download LINK

    ReplyDelete

Powered by Blogger.