Advertisement
ChaeYuriya

stack_character.cpp

Nov 3rd, 2024
41
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.35 KB | None | 0 0
  1. #include <iostream>
  2. #include "stack_character.h"
  3.  
  4. using namespace std;
  5.  
  6. void createStack(stack &S){
  7.     top(S) = 0;
  8. }
  9.  
  10. bool isEmpty(stack S){
  11.     if(top(S) == 0){
  12.         return true;
  13.     }
  14.     return false;
  15. }
  16.  
  17. bool isFull(stack S){
  18.     if(top(S)== MAXSTACK){
  19.         return true;
  20.     }
  21.     return false;
  22. }
  23.  
  24. void push(stack &s,infotype x){
  25.     if(!isFull(s)){
  26.         top(s) += 1;
  27.         info(s)[top(s)] = x;
  28.     }else{
  29.         cout<<"Stack penuh"<<endl;
  30.     }
  31. }
  32.  
  33. void pop(stack &s,infotype &x){
  34.     if(!isEmpty(s)){
  35.         x = info(s)[top(s)];
  36.         top(s)-=1;
  37.     }else{
  38.         cout<<"Stack Kosong"<<endl;
  39.     }
  40. }
  41.  
  42. void printInfo(stack S){
  43.     if(!isEmpty(S)){
  44.         for(int x = top(S);x>0;x--){
  45.             cout << info(S)[x] <<" ";
  46.         }
  47.         cout<<endl;
  48.     }else{
  49.         cout<<"Stack Kosong"<<endl;
  50.     }
  51. }
  52.  
  53. void ascending(stack &s){
  54.     int n = s.top-1;
  55.     infotype tempArray[MAXSTACK];
  56.  
  57.     for (int i = 1; i <= n+1; i++) {
  58.         tempArray[i] = info(s)[i];
  59.     }
  60.     for (int i = 1; i <= n; i++) {
  61.         for (int j = 1; j <= n; j++) {
  62.             if (tempArray[j] < tempArray[j + 1]) {
  63.                 infotype temp = tempArray[j];
  64.                 tempArray[j] = tempArray[j + 1];
  65.                 tempArray[j + 1] = temp;
  66.             }
  67.         }
  68.     }
  69.  
  70.     for (int i = 1; i <= n+1; i++) {
  71.         info(s)[i] = tempArray[i];
  72.     }
  73. }
  74.  
  75. void descending(stack &s){
  76.     int n = s.top-1;
  77.     infotype tempArray[MAXSTACK];
  78.  
  79.     for (int i = 1; i <= n+1; i++) {
  80.         tempArray[i] = info(s)[i];
  81.     }
  82.     for (int i = 1; i <= n; i++) {
  83.         for (int j = 1; j <= n; j++) {
  84.             if (tempArray[j] > tempArray[j + 1]) {
  85.                 infotype temp = tempArray[j];
  86.                 tempArray[j] = tempArray[j + 1];
  87.                 tempArray[j + 1] = temp;
  88.             }
  89.         }
  90.     }
  91.  
  92.     for (int i = 1; i <= n+1; i++) {
  93.         info(s)[i] = tempArray[i];
  94.     }
  95. }
  96.  
  97. void stringToStack(stack &S,const string &str){
  98.     for (int i = 0; i < str.size(); i++){
  99.         if (!isFull(S)) {
  100.             push(S, str[i]);
  101.         } else {
  102.             break;
  103.         }
  104.     }
  105. }
  106.  
  107. void reverseStack(stack &s){
  108.     int n = top(s);
  109.     for (int i = 1; i <= n / 2; i++) {
  110.         infotype temp = s.info[i];
  111.         s.info[i] = s.info[n - i+1];
  112.         s.info[n - i+1] = temp;
  113.     }
  114. }
  115.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement