Mari Putus Mata Rantai Penyebaran Virus Covid-19 dengan Tetap Jalankan Protokol Kesehatan Jaga Jarak dan Tetap Pakai Masker Sesuai Standar Pemerintah, Dan Selalu Bawa Hands Sanitizer Saat Keluar Rumah. Tetap Jaga Kesehatan dengan Olahraga dan Makan-makanan yang Sehat info lebih lanjut www.covid19.go.id

Program Stack di C++

Stack atau Tumpukan adalah suatu struktur data yang terbentuk dari barisan hingga yang terurut dari satuan data. Pada Stack, penambahan dan penghapusan elemennya hanya dapat dilakukan pada satu posisi, yaitu posisi akhir stack. Posisi ini disebut Puncak atau Top dari stack. 

Stack merupakan konsep Last In First Out (LIFO), maksudnya data yang disimpan terakhir akan di ambil lebih dahulu. implementasi dari stack sendiri dapat menggunaka array atau linked list, implementasi dengan array kemungkinan stack dalam kondisi penuh adalha sangat tinggi sedangkan dengan Linked List stack tidak pernah dapat penuh.


Gambar, 1.1 Ilustrasi Stack Push

Operasi Stack Push adalah meletakkan elemen atau item kedalam stack

Gambar 1.2 Ilustrasi Stack POP
Operasi Stack POP adalah mengambil elemen  atau item dari stack sesuai dengan defenisi di atas adalah yang terakhir masuk itu yang pertama keluar.


pada kali ini program latihan kami yaitu Mengubah Bilangan Desimal ke biner oktal dan heksa.

#include<stdio.h>
#include<conio.h>

int MAXSTACK;
typedef int itemtype;

typedef struct
{
 itemtype item[300];
 int count;
}stack;

void initializestack(stack *s)
{
 s->count = 0;
}

int empty(stack *s)
{
 return (s->count == 0);
}

int full(stack *s)
{
 return (s->count == MAXSTACK);
}

void push(itemtype x, stack *s)
{
 if(full(s))
 printf("stack penuh !\n");
 else
 {
 s->item[s->count]=x;
 ++(s->count);
 }
}

int pop(stack *s)
{
 if(empty(s))
 printf("stack kosong\n");
 else
 {
 --(s->count);
 return (s->item[s->count]);
 }
 return 0;
}
//deklarasi
int i, n, m, o,p,pilih;
int input;
stack tumpukan;
void biner();
void oktal();
void heksa();
main()
{
 printf("-------konversi desimal ke biner oktal dan heksadesimal------\n");
 initializestack(&tumpukan);
 printf("\nmasukkan bilangan desimal = ");
 scanf("%d", &input);
 printf("\n---MENU---\n");
 printf("1 untuk konversi ke biner\n");
 printf("2 untuk konversi ke oktal\n");
 printf("3 untuk konversi ke heksa\n");
 printf("4 untuk keluar");
 while(pilih<4){
 printf("\n\npilih :  ");
 scanf("%d",&pilih);
 switch(pilih)
 {
 case 1:
 printf("bilangan binernya\n");
 biner();break;
 case 2:
 printf("bilangan oktalnya\n");
 oktal();break;
 case 3:
 printf("bilangan heksadesimalnya\n");
 heksa();break;
 case 4:
 printf("--silahkan tekan enter sekalilagi");
 }}
 getch();
 return 0;
}
//ke oktal
void oktal(){
for(o=1,n=input;n>0;n=n/8,o++)
 {
 MAXSTACK=o;
 m=n%8;
 push(m,&tumpukan);
 }
for(i=MAXSTACK;i>0;i--)
 {
 printf("%d", pop(&tumpukan));
 }
}
//ke biner
void biner(){
for(o=1,n=input;n>0;n=n/2,o++)
 {
 MAXSTACK=o;
 m=n%2;
 push(m,&tumpukan);
 }
for(i=MAXSTACK;i>0;i--)
 {
 printf("%d", pop(&tumpukan));
 }
}
//ke heksa desimal
void heksa()
{
for(o=1,n=input;n>0;n=n/16,o++)
 {
 MAXSTACK=o;
 m=n%16;
 push(m,&tumpukan);
 }
for(i=MAXSTACK;i>0;i--)
 {
 p=pop(&tumpukan);
 if(p<=9)
 printf("%d",p);
 else if(p==10)printf("A");
 else if(p==11)printf("B");
 else if(p==12)printf("C");
 else if(p==13)printf("D");
 else if(p==14)printf("E");
 else if(p==15)printf("F");
 }
}

  • Program Pembalik kalimat
#include <iostream>
#include <string.h>
#include <stdio.h>
#include <windows.h>

using namespace std;

main()

{
char word[100];
int maxStack, i;

cout<<"Masukkan Kalimat : ";
gets(word);
maxStack=strlen(word);

system("cls");

cout<<"Kalimat : "<<word;
cout<<"\nMenjadi :";
for (i=maxStack; i>=0; i--){
char stack=word[i];
cout<<stack;
}
}

  •  Program Polindrom
#include <stdio.h>
#include <conio.h>
#include <string.h>

void push(char);
char pop();



char stack[100];
int top = -1;



int main()
{
    char str[100];
    int i, count = 0, len;

    printf("Masukan sebuah string : ");
    scanf("%s", str);

    len = strlen(str);

    for (i = 0; i < len; i++)
    {
        push(str[i]);
    }

    for (i = 0; i < len; i++)
    {
        if (str[i] == pop())
            count++;
    }

    if (count == len)
        printf("string %s ini adalah kalimat palindrom", str);
    else
        printf("string %s ini adalah bukan kalimat palindrom", str);
        getch();
}

void push(char c)
{
    stack[++top] = c;
}

char pop()
{
    return(stack[top--]);
}

Posting Komentar

2 Komentar