Một số phép toán trên Stack
Các phép toán cơ bản
makenullStack
Yêu cầu
Khởi tạo một Stack rỗng.
void makenullStack(Stack *pS)
{
pS->Top_idx = MaxLength;
}
emptyList
Yêu cầu
Kiểm tra Stack rỗng.
int emptyStack(Stack S)
{
return S.Top_idx == MaxLength;
}
fullStack
Yêu cầu
Kiểm tra Stack đầy.
int fullStack(Stack S)
{
return S.Top_idx == 0;
}
top
Yêu cầu
Trả về giá trị của đỉnh Stack.
ElementType top(Stack S)
{
return S.Elements[S.Top_idx];
}
pop
Yêu cầu
Xóa phần tử ở đầu Stack.
void pop(Stack *pS)
{
pS->Top_idx++;
}
push
Yêu cầu
Chèn thêm phần tử vào đỉnh Stack.
void push(ElementType x, Stack *pS)
{
pS->Top_idx--;
pS->Elements[pS->Top_idx] = x;
}
MỘT SỐ PHÉP TOÁN KHÁC (BÀI TẬP TRÊN ELSE)
xoa
Yêu cầu
Xóa phần tử đỉnh.
void xoa(NganXep *pS)
{
if (pS->Dinh == SoPhanTu)
return;
pS->Dinh++;
}
khoitao
Yêu cầu
Khởi tạo Stack rỗng.
void khoitao(NganXep *pS)
{
pS->Dinh = SoPhanTu;
}
them
Yêu cầu
Thêm phần tử vào đỉnh của Stack.
void them(int x, NganXep *pS)
{
if (pS->Dinh == 0)
return;
pS->Dinh--;
pS->DuLieu[pS->Dinh] = x;
}
ktRong
Yêu cầu
Kiểm tra Stack rỗng.
int ktRong(NganXep S)
{
return S.Dinh == SoPhanTu;
}
ktDay
Yêu cầu
Kiểm tra Stack đầy.
int ktDay(NganXep S)
{
return S.Dinh == 0;
}
hienthi
Yêu cầu
Hiển thị Stack.
void hienthi(NganXep *pS)
{
for (int i = pS->Dinh; i < SoPhanTu; i++)
printf("%d ", pS->DuLieu[i]);
}
giatriDinh
Yêu cầu
Trả về giá trị tại đỉnh.
int giatriDinh(NganXep S)
{
return S.DuLieu[S.Dinh];
}