stack là cấu trúc dữ liệu tuyến tính tuân theo nguyên tắc LIFO (Last In First Out - Vào sau ra trước) hoặc FILO (First In Last Out). Phần tử được thêm vào cuối (đỉnh) và cũng bị lấy ra từ cuối.
Các hàm chính
- s.size() – Số phần tử trong stack.
- s.push() – Đẩy phần tử vào đỉnh stack.
- s.pop() – Lấy phần tử đỉnh ra (không trả về giá trị).
- s.top() – Trả về tham chiếu đến phần tử đỉnh.
- s.empty() – Kiểm tra stack rỗng.
Ví dụ mã: Menu Stack
#include <iostream>
#include <stack>
#include <string>
#include <cstdlib>
using namespace std;
int main() {
stack<int> s;
int c, i;
while (true) {
cout << "1. Kích thước Stack\n";
cout << "2. Thêm phần tử vào Stack\n";
cout << "3. Xóa phần tử khỏi Stack\n";
cout << "4. Phần tử đỉnh Stack\n";
cout << "5. Thoát\n";
cout << "Nhập lựa chọn: ";
cin >> c;
switch (c) {
case 1:
cout << "Kích thước stack: " << s.size() << endl;
break;
case 2:
cout << "Nhập giá trị: ";
cin >> i;
s.push(i);
break;
case 3:
if (!s.empty()) {
i = s.top();
s.pop();
cout << i << " Đã xóa\n";
} else {
cout << "Stack rỗng!\n";
}
break;
case 4:
if (!s.empty())
cout << "Phần tử đỉnh: " << s.top() << endl;
else
cout << "Stack rỗng!\n";
break;
case 5:
return 0;
default:
cout << "Lựa chọn không hợp lệ\n";
}
}
return 0;
}
Kết quả mẫu
1. Kích thước Stack 2. Thêm phần tử vào Stack 3. Xóa phần tử khỏi Stack 4. Phần tử đỉnh Stack 5. Thoát Nhập lựa chọn: 1 Kích thước stack: 0 ... Nhập lựa chọn: 2 Nhập giá trị: 1 ... Nhập lựa chọn: 3 4 Đã xóa ... Nhập lựa chọn: 4 Phần tử đỉnh: 10 Nhập lựa chọn: 5