Ngăn Xếp Dữ Liệu

watch_later Thứ Bảy, 3 tháng 6, 2017

#include<iostream.h>
#include<conio.h>
//using namespace std;
//cai dat ngan xep mang 1 chieu
//dinh nghia kieu stack
const unsigned int Maxlength=100;
typedef struct tagStack
  {
    int a[Maxlength];
    int t;
  }Stack;
//Ham tao ngan xep rong
void CreateStack (Stack &S)
  {
    S.t=-1;
  }
//Ham ktr ngan xep rong
int IsEmpty(Stack S)
  {
    if(S.t==-1) return 1;
    else        return 0;
  }
//Ham kt ngan xep day
int IsFull(Stack S)
  {
    if(S.t==Maxlength-1) return 1;
    else                 return 0;
  }
int Push(Stack &S, int x)
  {
    if(IsFull(S)!=1)
       { S.t++;
  S.a[S.t]=x;
  return 1;
       }
    else return 0;
  }
//Ham xoa 1 ptu o dinh ngan xep
int Pop(Stack &S, int &x)
  {
    if(IsEmpty(S)!=1)
      { x=S.a[S.t];
 S.t--;
  return 1;
      }
    else return 0;
  }
int main()
{
  clrscr();
  Stack S;
  CreateStack (S);
  unsigned int N;
  cout<<"Nhap N: "; cin>>N;
  unsigned int temp=N;
  while (temp!=0)
    {
      Push(S,temp%2);
      temp=temp/2;
    }
  cout<<"Day nhi phan cua "<<N<<" la: ";
  while (IsEmpty(S)!=1)
    {
      int x;
      Pop(S,x);
      cout<<x;
    }
  getch ();
  return 0;
}