Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 13 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
13
Dung lượng
397 KB
Nội dung
NGĂN XẾP
STACK
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ănxếp chỉ thực hiện ở
một đầu gọi là đỉnh ngăn xếp
A
B
C
D
Đỉnh
Đáy
Hình ảnh ngăn xếp
Item
BIỂU DIỄN CẤUTRÚCDỮ LIỆU
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ấutrú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
#define Max N
//Định nghĩa kiểu Item
struct Stack{
Item E[Max] ;
int top ;
} ;
Stack S ; //Khai báo ngănxếp S
BIỂU DIỄN CẤUTRÚCDỮ LIỆU
D
C
B
A
0
1
2
top=3
Max=7
E
Ngăn xếp
Chưa có
Mảng lưu trữ ngăn xếp
6
BIỂU DIỄN CẤUTRÚCDỮ LIỆU
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
Const Max = N ;
Type Stack = Record
E : Array[1 Max] Of Item ;
top : 0 Max ;
End ;
Var S : Stack ; {Khai báo ngănxếp S}
BIỂU DIỄN CẤUTRÚCDỮ LIỆU
#define Max 100
struct Hoc_sinh{
char ho_ten[25];
int tuoi;
float dtb;
};
struct Stack{
Hoc_sinh E[Max];
int top;
};
Stack S;
Ví dụ: Ngănxếp chứa thông tin học sinh
CÁC PHÉP TOÁN TRÊN NX
Khởi tạo ngănxếp rỗng
void Initialize (Stack &S)
{
S.top = -1;
}
Kiểm tra ngănxếp rỗng
int Empty (Stack S)
{
return (S.top == -1);
}
0
1
2
3
Max=7
E
4
5
Ngăn xếp rỗng
top = -1
6
CÁC PHÉP TOÁN TRÊN NX
Kiểm tra ngănxếp đầy
int Full (Stack S)
{
return (S.top == Max-1);
}
0
1
2
3
Max=7
E
G
F
E
D
C
B
A
4
5
Ngăn xếp đầy
top = Max-16
CÁC PHÉP TOÁN TRÊN NX
Bổ sung một phần tử X vào đỉnh ngănxếp S
0
1
2
Max=7
E
D
C
B
A
4
5
top = 4
0
1
2
3
Max=7
E
D
C
B
A
5
top 3
X
top = 4
0
1
2
3
E
X
D
C
B
A
5
6
6
Max=7
6
CÁC PHÉP TOÁN TRÊN NX
Bổ sung một phần tử vào đỉnh ngănxếp S
int PUSH (Stack &S, Item X)
{
if ( Full(S)) return 0;
else
{
S.top++;
S.E[S.top] = X;
return 1;
}
}
[...]... phần tử ở đỉnh ngănxếp S Max=7 Max=7 6 6 5 5 4 4 D D 3 2 C top = 2 C 1 B 1 B 0 A 0 A top = 3 E E CÁC PHÉP TOÁN TRÊN NX Lấy một phần tử ở đỉnh ngănxếp S Int POP (Stack &S, Item &Y) { if (Empty(S)) return 0; else { Y = S.E[S.top]; S.top ; return 1; } } CÁ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 . LIỆU D C B A 0 1 2 top=3 Max=7 E Ngăn xếp Chưa có Mảng lưu trữ ngăn xếp 6 BIỂU DIỄN CẤU TRÚC DỮ LIỆU 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. ngăn xếp A B C D Đỉnh Đáy Hình ảnh ngăn xếp Item BIỂU DIỄN CẤU TRÚC DỮ LIỆU 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. NGĂN XẾP STACK 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 ở một đầu gọi là đỉnh ngăn xếp A B C D Đỉnh Đáy Hình