Ngăn Xếp Stack - Kiểu cài 3: cài dựa trên danh sách đặc
Tạo 1 file tên là thuvien_list.cpp với nội dung như sau:
Tạo 1 file tên là thuvien_list.cpp với nội dung như sau:
#include <stdio.h>Tiếp tục tạo file tên ngan_xep.cpp cùng thư mục với file thuvien_list.cpp với nội dung sau:
#include <conio.h>
#define MaxLength 50
typedef int ElementType;
typedef int Position;
typedef struct List{
ElementType Elements[MaxLength];
Position Last;
} ;
void MakeNullList(List &L){
L.Last=0;
}
int EmptyList(List L){
return (L.Last==0);
}
void InsertList(ElementType X,Position P,List &L){
if(L.Last==MaxLength)
printf("danh sach day roi!!\n");
else if (P<1||P>L.Last+1)
printf("vi tri them k hop le!!\n");
else{
for (int i=L.Last;i>=P;i--)
L.Elements[i]=L.Elements[i-1];
L.Elements[P-1]=X;
L.Last=L.Last+1;
}
}
void DeleteList(Position P, List &L){
if (P>=1 && P<=L.Last && !EmptyList(L)){
for(int i=P-1;i<L.Last-1;i++)
L.Elements[i]=L.Elements[i+1];
L.Last=L.Last-1;
}
}
ElementType Retrieve(Position P, List L){
return L.Elements[P-1];
}
#include "thuvien_list.cpp"
typedef List Stack;
void MakeNullStack(Stack &S){
MakeNullList(S);
}
int EmptyStack(Stack S){
return EmptyList(S);
}
void Push(ElementType X, Stack &S){
InsertList(X,1,S);
}
void Pop(Stack &S){
DeleteList(1,S);
}
ElementType Peek(Stack S){
return Retrieve(1,S);
}
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;
}