Wednesday, February 22, 2017

STACK , Apa itu Stack dalam Struktur Data

Definisi

Stack disebut juga tumpukan dimana data hanya dapat dimasukkan dan diambil dari satu sisi.
Karena itu, stack bersifat LIFO(Last In First Out).

Operasi yang dapat dilakukan stack adalah:
1.    Menambah (push)
2.    Mengambil (pop)
3.    megecek apakah stack penuh (isFull)
4.    mengecek apakah stack kosong (isEmpty)
5.    membersihkan stack (clear).
6.    Mencetak isi stack (print)

Operasi-operasi stack

Saat ini, kita akan mencoba membuat stack dan  operasi-operasi yang dapat dilakukannya.

1.    Mendefinisikan stack dengan menggunakan struct
typedef struct stack //    Mendefinisikan stack dengan menggunakan struct
{
int top;
char data [15][20];   // menampung 15 data dengan jumlah string max 20 huruf
};






2.    Mendefinisikan max_stack untuk maksimum isi stack
#define max_stack 15

3.    Membuat variable array sebagai implementasi stack
stack tumpuk;

4.    Mendeklarasikan operasi-operasi/fungsi yang dapat dilakukan stack.
a.    Push (menginputkan data pada stack)

void push(char d[20])
{
       tumpuk.top++;
       strcpy(tumpuk.data[tumpuk.top],d);
       printf("data berhasil dimasukkan");
}










b.    Pop (mengambil data pada stack)
void pop()
{
       printf ("data %s terambil",tumpuk.data[tumpuk.top]);
       tumpuk.top--;
}




c.    IsFull(megecek apakah stack penuh)
int isFull()
{
       if (tumpuk.top==max_stack-1)
              return 1;
       else
              return 0;
}








d.    isEmpty(mengecek apakah stack kosong)
int isEmpty()
{
       if (tumpuk.top==-1)
              return 1;
       else
              return 0;
}









e.    clear (membersihkan seluruh isi stack)
void clear()
{
       tumpuk.top=-1;
       printf("semua data terhapus.");

}








f.     print (mencetak seluruh isi stack)
void print()
{
       for (int i=tumpuk.top;i>=0;i--)
              printf ("%s\n",tumpuk.data[i]);
}







QUEUE
Queue disebut juga antrian dimana data masuk di satu sisi dan keluar di sisi yang lain. Karena itu, queue bersifat FIFO(First In First Out).

Saat ini, kita akan mencoba membuat queue dan operasi-operasi yang dapat dilakukannya.

Hal-hal yang perlu dilakukan untuk membuat queue yaitu
1.    Mendefinisikan queue dengan menggunakan struct dimana kita perlu menggunakan variable head dan tail sebagai penanda pada stack.
typedef struct queue //    Mendefinisikan queue dengan menggunakan struct
{
int head;
int tail;
char data [15][20];   // menampung 15 data dengan jumlah string max 20 huruf
};






2.    Mendefinisikan max untuk maksimum isi queue
#define max 15

3.     Membuat variable array sebagai implementasi queue
queue antri;

4.    Mendeklarasikan operasi-operasi/fungsi yang dapat dilakukan queue.
a.    Enqueue (menginputkan data pada queue)
void enqueue(char d[20])
{
       antri.head=0;
       antri.tail++;
       strcpy(antri.data[antri.tail],d);
       printf("data berhasil dimasukkan");
}







b.    Dequeue (mengambil data dari queue)
void dequeue()
{
       printf ("data %s terambil",antri.data[antri.head]);
       for (int i=antri.head;i<=antri.tail;i++)
              strcpy (antri.data[i],antri.data[i+1]);
       antri.tail--;
}





c.   
int isEmpty()
{
       if (antri.tail==-1)
       {
              antri.head=-1;
              return 1;
       }
       else
              return 0;
}
isEmpty (mengecek apakah antrian kosong)










d.    isFull (mengecek apakah antrian penuh)
int isFull()
{
       if (antri.tail==max-1)
              return 1;
       else
              return 0;
}








e.    clear (membersihkan seluruh isi antrian)
void clear()
{
       antri.head=antri.tail=-1;
       printf("semua data terhapus.");

}



f.     Print(mencetak seluruh isi antrian)
void print()
{
       for (int i=0;i<=antri.tail;i++)
              printf ("%s\n",antri.data[i]);
}










Share:

0 comments:

Post a Comment