Ngăn xếp(Stack)
- Định nghĩa: Tập hợp các node thông tin được tổ chức liên tục hoặc
rời rạc nhau trong bộ nhớ và thực hiện theo cơ chế FILO (First – In – Last –
Out )
- Biểu diễn liên tục: Các phần tử được lưu trữ liền kề nhau (Array-Mảng)
- Biểu diễn rời rạc: Các phần tử được lưu trữ rời rạc (LinkedList-DS liên kết)
- Khai báo
Ta cần:- 1 con trỏ Top lưu vị trí của đỉnh Stack
- 1 kiểu dữ liệu lưu các giá trị: Array, LinkedList, List, Vector..
class stack{ int top; int s[100]; } - Các thao tác
- Kiểm tra tính Rỗng của stack:top=-1 là rỗng và ngược lại
bool isEmpty(){ if(top==-1) //quy uoc top=-1 la rong va nguoc lai return true; return false; } - Kiểm tra tính đầy của stack: do mình đặt size=100 nên khi top==99 sẽ là đầy stack
bool isFull(){ if(top==99) return true; return false; } - Thêm 1 phần tử vào stack
void push(int value){ if(!isFull()) s[++top]=value; else cout<<"Stack Full"<< endl; } - Lấy 1 phần tử ra khỏi stack
int pop(){ if(!isEmpty()){ int x=s[top--]; return x; } else cout<<"Stack Empty"<< endl; }
- Kiểm tra tính Rỗng của stack:top=-1 là rỗng và ngược lại
- Trong thư viện STL của C++ cũng có 1 lớp Stack được cài đặt sẵn như List hay Vector ở bài trước:
Lưu ý cần include lớp Stack: #include< stack >- Khai báo: stack < kieu_du_lieu > ten_bien
VD: stack < int > a; - Các hàm hay sử dụng:
- bool empty();// Stack rỗng trả về true và ngược lại
- void push(value);// thêm 1 phần tử vào Stack
- void pop();//xóa phần tử ở đỉnh Stack
- reference top();//trả về giá trị tại đỉnh Stack
- int size();//trả về kích thước của Stack
- duyệt các phần tử trong Stack: :từ đỉnh xuống
void showstack(stacks){ while (!s.empty()){ cout << s.top() << " "; s.pop(); } cout << endl; }
- Khai báo: stack < kieu_du_lieu > ten_bien
- Code các bạn có thể tham khảo ở đây và ở đây - chịu khó chút quảng cáo ạ

0 Nhận xét