KHÁI NIỆM NGĂN XẾP Là một danh sách tuyến tính Bổ sung một phần tử vào ngăn xếp hoặc lấy một phần tử ra khỏi ngăn xếp chỉ thực hiện ở B C Đáy Hình ảnh ngăn xếp Item... BIỂU DIỄN CẤU TRÚ
Trang 1Please purchase a personal license.
STACK
Trang 2KHÁI NIỆM NGĂN XẾP
Là một danh sách tuyến tính
Bổ sung một phần tử vào ngăn
xếp hoặc lấy một phần tử ra
khỏi ngăn xếp chỉ thực hiện ở
B C
Đáy
Hình ảnh ngăn xếp
Item
Trang 3BIỂU DIỄN CẤU TRÚC DỮ LIỆU
#define Max N //Định nghĩa kiểu Item
struct Stack{
Item E[Max] ; int top ;
} ;
Stack S ; //Khai báo ngăn xếp S
N là độ dài của ngăn xếp
Item là kiểu dữ liệu của các phần tử
Ngăn xếp là một cấu trúc gồm 2 thành phần
Biến top lưu chỉ số của phần tử mảng lưu phần tử ở
đỉ nh ngăn xếp
Mảng E lưu các phần tử của ngăn xếp
Stack S ; //Khai báo ngăn xếp S
Trang 4BIỂU DIỄN CẤU TRÚC DỮ LIỆU
D
top=3
Max=7
Chưa có 6
D C B A
0 1 2 top=3
E
Ngăn xếp
Mảng lưu trữ ngăn xếp
Trang 5BIỂU DIỄN CẤU TRÚC DỮ LIỆU
Const Max = N ; Type Stack = Record
E : Array[1 Max] Of Item ; top : 0 Max ;
End ; Var S : Stack ; {Khai báo ngăn xếp S}
N là độ dài của ngăn xếp
Item là kiểu dữ liệu của các phần tử
Ngăn xếp là một bản ghi gồm hai trường
Biến top lưu chỉ số của phần tử mảng lưu phần tử ở
đỉ nh ngăn xếp
Mảng E lưu các phần tử của ngăn xếp
Trang 6BIỂU DIỄN CẤU TRÚC DỮ LIỆU
#define Max 100 struct Hoc_sinh{
char ho_ten[25];
Ví dụ: Ngăn xếp chứa thông tin học sinh
char ho_ten[25];
int tuoi;
float dtb;
};
struct Stack{
Hoc_sinh E[Max];
int top;
};
Stack S;
Trang 7CÁC PHÉP TOÁN TRÊN NX
Khởi tạo ngăn xếp rỗng
void Initialize (Stack &S)
{
S.top = -1;
Max=7
4 5 6
}
Kiểm tra ngăn xếp rỗng
int Empty (Stack S)
{
return (S.top == -1);
}
0 1 2 3
E
Ngăn xếp rỗng
top = -1
Trang 8CÁC PHÉP TOÁN TRÊN NX
Kiểm tra ngăn xếp đầy
3
Max=7
G F E D
4 5
top = Max-1
6
int Full (Stack S)
{
return (S.top == Max-1);
}
0 1 2 3
E
D C B A
Ngăn xếp đầy
Trang 9CÁC PHÉP TOÁN TRÊN NX
Bổ sung một phần tử X vào đỉnh ngăn xếp S
Max=7
5
Max=7
Max=7
6
0 1 2
E
D C B A
4
5
top = 4
0 1 2 3
E
D C B A
5
top 3
X
top = 4
0 1 2 3
E
X
D C B A
5
Trang 10CÁC PHÉP TOÁN TRÊN NX
Bổ sung một phần tử vào đỉnh ngăn xếp S
int PUSH (Stack &S, Item X)
{
if ( Full(S)) return 0;
else {
S.top++;
S.E[S.top] = X;
return 1;
} }
Trang 11CÁC PHÉP TOÁN TRÊN NX
Lấy một phần tử ở đỉnh ngăn xếp S
Max=7
5
Max=7
5
0
1
2
E
D C B A
4
5
top = 2
0 1
4 3
E
C B A
5
top = 3
D
Trang 12CÁC PHÉP TOÁN TRÊN NX
Lấy một phần tử ở đỉnh ngăn xếp S
Int POP (Stack &S, Item &Y)
{
if (Empty(S))
return 0;
else {
Y = S.E[S.top];
S.top ;
return 1;
} }
Trang 13CÁC PHÉP TOÁN TRÊN NX
Ví dụ ứng dụng
Viết chương trình:
- Nhập số nguyên dương N
- Đổi số N sang dạng mã nhị phân tương ứng của nó.
- In kết quả ra màn hình