Stack

  • Uploaded by: dwianto agung siwitomo
  • 0
  • 0
  • April 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Stack as PDF for free.

More details

  • Words: 598
  • Pages: 6
Stack (tumpukan) Stack(tumpukan) merupakan sebuah logika / cara untuk menyusun data dengan menggunakan prinsip LIFO(last in first out) sehingga data terlihat seperti arsip yang ditumpuk dalam sebuah kotak penyimpanan. Contoh listing program dengan menggunakan prinsip Stack. #include <stdio.h> #include #define MAX 10 //Pendeklarasian typedef struct { int top; int data[MAX]; }Stack; Stack tumpukan; //Inisialisasi void Inisialisasi() { tumpukan.top =0; } //memeriksa kondisi apakh kosong atau penuh int IsEmpty(){ if(tumpukan.top==0) return 1; else return 0; } int IsFull(){ if(tumpukan.top==MAX) return 1; else return 0; } //Tambah data tumpukkan void Push(int data){ if(IsEmpty()==1){ tumpukan.top++; tumpukan.data[tumpukan.top]=data; } else if(IsFull()==0){ tumpukan.top++; tumpukan.data[tumpukan.top]=data; } printf("\n\nDATA MASUK !!\n",tumpukan.data[tumpukan.top]); printf("\n\n\[press anykey to continue]"); } //Hapus Data atau ambil tumpukan teratas void Pop(){ printf("\n\nData Tumpukan teratas = %d\n",tumpukan.data[tumpukan.top]); printf("\nSUDAH DI HAPUS !!");

tumpukan.top--; printf("\n\n[press anykey to continue]"); } //Tampilkan data void Tampil(){ if(IsEmpty()==0){ for(int i=tumpukan.top;i>0;i--){ printf("\n %d\n----",tumpukan.data[i]); } }else printf("\nKOSONG!!\n"); printf("\n\n[press anykey to continue]"); } //Kosongkan Stack void Clear(){ tumpukan.top =0; printf("\nStack Sudah diKosongkan !!\n"); printf("\n\n[press anykey to continue]"); } //Menu Pilihan void main() { int pil; int data; Inisialisasi(); do{ clrscr(); printf("\t\tSTACK (TUMPUKAN)\n"); printf("\t\t****************\n\n"); printf("===================\n"); printf(" [MENU]\n"); printf("===================\n"); printf("1. Push (Tambah Tumpukan)\n"); printf("2. Pop (Hapus Data Teratas)\n"); printf("3. Tampilkan isi Stack\n"); printf("4. Kosongkan semua isi Stack\n"); printf("5. Exit\n"); printf("===================\n"); printf("Pilihan = ");scanf("%d",&pil); printf("\n"); switch(pil){ case 1: printf("\nMasukkan Angka = "); scanf("%d",&data); Push(data); break; case 2: Pop(); break; case 3: printf("\nISI STACK = \n");Tampil(); break; case 4: Clear();

break; case 5: printf("\n--- THANK YOU ---- \n\n\npress anykey to exit"); }getch(); } while(pil!=5); }

Selipkan data di index yang kosong (Tugas Praktikan Convert ke bahasa C++): #include <stdio.h> #include #define MAX 10 //Pendeklarasian typedef struct { int top; int data[MAX]; }Stack; Stack tumpukan; void Inisialisasi(); int IsEmpty(); int IsFull(); int dimana(); void Push(int data); void Selipkan(int selip); void Pop(); void Tampil(); void Clear(); int cek(); //Inisialisasi void Inisialisasi() { tumpukan.top =0; } //memeriksa kondisi apakh kosong atau penuh int IsEmpty(){ if(tumpukan.top==0) return 1; else return 0; } int IsFull(){ if(tumpukan.top==MAX) return 1; else return 0; } //cek dulu int cek() { if(IsEmpty()==1) { return 1;

} else return 0; } //cek tempat kosong int dimana(){ int k; for(k=1;k<=tumpukan.top;k++) { if(tumpukan.data[k]==0) { printf("\tIndex [%i] kosong\n",k); } } printf("\n\n[press anykey to continue]"); } //Tambah data tumpukkan void Push(int data){ if(IsEmpty()==1){ tumpukan.top++; tumpukan.data[tumpukan.top]=data; } else if(IsFull()==0){ tumpukan.top++; tumpukan.data[tumpukan.top]=data; } printf("\n\nDATA MASUK !!\n",tumpukan.data[tumpukan.top]); printf("\n\n\[press anykey to continue]"); } //selipkan data pada tempat kosong void Selipkan(int a,int selip){ tumpukan.data[a]=selip; printf("\n\n[press anykey to continue]"); } //Hapus Data yang dipilih void Pop(){ int x,n; Tampil(); printf("data yang ingin dihapus : "); scanf("%d",&x); for(n=1;n<=tumpukan.top;n++) { if(tumpukan.data[n]==x) { tumpukan.data[n]=0; } } printf("\n\n[press anykey to continue]"); } //Tampilkan data void Tampil(){ if(IsEmpty()==0){ for(int i=tumpukan.top;i>0;i--){

printf("\n %d\n----",tumpukan.data[i]); } }else printf("\nKOSONG!!\n"); } //Kosongkan Stack void Clear(){ tumpukan.top =0; printf("\nStack Sudah diKosongkan !!\n"); printf("\n\n[press anykey to continue]"); } //Menu Pilihan void main() { int pil; int data,in,mas; Inisialisasi(); do{ clrscr(); printf("\t\tSTACK (TUMPUKAN)\n"); printf("\t\t****************\n\n"); printf("===================\n"); printf(" [MENU]\n"); printf("===================\n"); printf("1. Push (Tambah Tumpukan)\n"); printf("2. Pop (Hapus Data)\n"); printf("3. Tampilkan isi Stack\n"); printf("4. Kosongkan semua isi Stack\n"); printf("5. Mana Stack yang kosong\n"); printf("6. Selipkan data pada tempat yang kosong\n"); printf("7. Exit\n"); printf("===================\n"); printf("Pilihan = ");scanf("%d",&pil); printf("\n"); switch(pil){ case 1: printf("\nMasukkan Angka = "); scanf("%d",&data); Push(data); break; case 2: Pop(); break; case 3: printf("\nISI STACK = \n"); Tampil(); printf("\n\n[press anykey to continue]"); break; case 4: Clear(); break; case 5: if(cek()==1){printf("STACK MASIH KOSONG!!!"); printf("\n\n[press anykey to continue]"); break;} else dimana(); break; case 6: if(cek()==1){printf("STACK MASIH KOSONG!!!"); printf("\n\n[press anykey to continue]"); break;}

else { printf("masukkan data pada index ke : "); scanf("%d",&in); printf("data yang dimasukkan : ");scanf("%d",&mas); Selipkan(in,mas); } break; case 7: printf("\n--- THANK YOU ---- \n\n\npress anykey to exit"); }getch(); } while(pil!=7); }

Related Documents

Stack
May 2020 16
Stack
April 2020 21
Stack
June 2020 14
Stack
November 2019 19
Stack
November 2019 19
Stack
December 2019 22

More Documents from ""