Stack dengan Fibonacci
Salam Blogger, Tugas kuliah sedang menumpuk,tapi untung yang satu ini sudah selesai, dalam posting kali ini saya mau share tentang stack.
Stack adalah sebuah tumpukan data,, dengan metode LIFO ( Last In Firs Out ), contoh stack di dunia nyata yaitu Tumpukan piring.
Fibonacci adalah urutan bilangan yang terdiri angka utama yaitu 0 dan 1, kemudian urutan berikutnya adalah bilangan penjumlahan dari bilangan sebelumnya, contoh : 0, 1, 1, 2, 3, 5, 8, 13, 21.
Berikut adalah scriptnya :
#include
#include
#include
#define MAX_STACK 100
typedef int infotype;
typedef struct{
infotype top;
int content[MAX_STACK];
}Stack;
void init(Stack *S)
{
(*S).top=-1;
}
void push(Stack *S, int value)
{
if((*S).top < MAX_STACK - 1))
{
(*S).top++;
(*S).content[(*S).top] = value;
}
else
printf("\nStack penuh...");
}
infotype pop(Stack *S)
{
infotype a;
if ((*S).top > -1)
{
a=(*S).content[(*S).top];
(*S).top--;
return(a);
}
else
{
printf("\nStack kosong...");
return 0;
}
}
void show(Stack S)
{
if (S.top > -1)
{
while (S.top != -1)
{
printf("\n %d", S.content[S.top]);
S.top--;
}
}
else
printf("\nStack kosong...");
}
void randomContent(Stack *S, int n)
{
int x;
if((*S).top < (MAX_STACK - 1))
{
(*S).top=n;
(*S).top++;
x=rand()%100;
(*S).content[(*S).top] = x;
}
else
printf("\nStack penuh...");
}
void fibonanci(Stack *S, int n)
{
int i;
if((*S).top < MAX_STACK - 1)
{
for(i=0; i
{
if(i<2>2>
{
(*S).top++;
(*S).content[(*S).top]=i;
}
else
{
(*S).top++;
(*S).content[(*S).top]=(*S).content[(*S).top-2]+(*S).content[(*S).top-1];
}
}
printf("\nData berhasil dimasukkan");
}
else
printf("\nStack penuh...");
}
void main()
{
int n;
Stack myStack;
char pilih;
infotype newVal,maks,a;
init(&myStack);
do
{
system("cls");
printf("\n++++++ MENU ++++++");
printf("\n1. PUSH");
printf("\n2. POP");
printf("\n3. ShowAll");
printf("\n4. PUSH yg diacak");
printf("\n5. PUSH Fibonacci ");
printf("\n6. Kosongkan Stack");
printf("\n\nPilihan : ");
pilih = getch();
switch(pilih)
{
case '1' :
printf("\nMasukkan nilai yang akan di-Push : ");
scanf("%d",&newVal);
push(&myStack, newVal);
getch();
break;
case '2' :
a=pop(&myStack);
printf("\nIsi stack yang di-POP : %d",a);
getch();
break;
case '3' :
show(myStack);
getch();
break;
case '4' :
printf("\nMasukkan maksimal bilangan : ");
scanf("%d",&maks);
randomContent(&myStack,maks);
getch();
break;
case '5' :
printf("\nMasukkan Banyak Nilai Baru : "); scanf("%d",&n);
fibonanci(&myStack, n);
getch();
break;
case '6':
init(&myStack);
printf("\nStack sudah kosong");
break;
}
}while(pilih != 27);
}
Jika ada error atau kurang jelas, bisa menghubungi author di amdan_i@yahoo.com ( Email / FB ),
Terimakasih telah mampir.
0 comments:
Posting Komentar