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;
}
|
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]);
}
|
0 comments:
Post a Comment