Cấu trúc dữ liệu: Ngăn Xếp Stack - Kiểu cài 3



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:

#include <stdio.h>
#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];
}


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 "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;
}

Bài liên quan

Bài liên quan