Ngăn Xếp Stack - Kiểu cài 1: cài tựa danh sách đặc
#include <stdio.h>
#include <conio.h>
#define MaxLength 50
typedef int ElementType;
typedef struct Stack{
ElementType Elements[MaxLength];
int TopIdx;
//Đỉnh ngăn xếp = chỉ số phần tử cuối trong mảng
};
void MakeNullStack(Stack &S){
S.TopIdx = -1;
}
int EmptyStack(Stack S){
return (S.TopIdx==-1);
}
void Push (ElementType X, Stack &S){
if (S.TopIdx == MaxLength-1)
printf("ngan xep day!!!\n");
else{
S.TopIdx = S.TopIdx+1;
S.Elements[S.TopIdx] = X;
//S.Elements[++S.TopIdx]X;
}
}
void Pop(Stack &S){
if (EmptyStack(S))
printf("Ngan xep rong! Khong co gi de Pop!!\n");
else
S.TopIdx=S.TopIdx-1;
}
ElementType Peek(Stack S){
return S.Elements[S.TopIdx];
}
void NhiPhan(int n){
Stack S;
MakeNullStack(S);
while(n!=0){
int sodu = n % 2;
Push(sodu,S);
n = n / 2;
}
while(!EmptyStack(S)){
printf("%d",Peek(S));
Pop(S);
}
printf("\n");
}
int main(){
int n;
printf("Nhap so nguyen n = ");
scanf("%d",&n);
for(int i=2;i<=n;i++){
printf("%d = ",i);
NhiPhan(i);
}
return 0;
}
Video: