Stack (ngăn xếp) tuân theo LIFO. Triển khai bằng mảng tĩnh kích thước cố định.
Ví dụ
#include <iostream>
using namespace std;
int stack[100], n = 100, top = -1;
void push(int val) {
if (top >= n - 1)
cout << "Stack Overflow" << endl;
else {
top++;
stack[top] = val;
}
}
void pop() {
if (top <= -1)
cout << "Stack Underflow" << endl;
else {
cout << "The popped element is " << stack[top] << endl;
top--;
}
}
void display() {
if (top >= 0) {
cout << "Stack elements are: ";
for (int i = top; i >= 0; i--)
cout << stack[i] << " ";
cout << endl;
} else
cout << "Stack is empty";
}
int main() {
int ch, val;
cout << "1) Push in stack" << endl;
cout << "2) Pop from stack" << endl;
cout << "3) Display stack" << endl;
cout << "4) Exit" << endl;
do {
cout << "Enter choice: " << endl;
cin >> ch;
switch(ch) {
case 1: {
cout << "Enter value to be pushed: " << endl;
cin >> val;
push(val);
break;
}
case 2: {
pop();
break;
}
case 3: {
display();
break;
}
case 4: {
cout << "Exit" << endl;
break;
}
default: {
cout << "Invalid Choice" << endl;
}
}
} while(ch != 4);
return 0;
}
Kết quả
1) Push in stack 2) Pop from stack 3) Display stack 4) Exit Enter choice: 1 Enter value to be pushed: 2 Enter choice: 1 Enter value to be pushed: 6 Enter choice: 1 Enter value to be pushed: 8 Enter choice: 1 Enter value to be pushed: 7 Enter choice: 2 The popped element is 7 Enter choice: 3 Stack elements are: 8 6 2 Enter choice: 5 Invalid Choice Enter choice: 4 Exit
Hàm push()
Kiểm tra tràn (top >= n-1). Tăng top và gán giá trị.
void push(int val) {
if (top >= n - 1)
cout << "Stack Overflow" << endl;
else {
top++;
stack[top] = val;
}
}
Hàm pop()
Kiểm tra rỗng (top <= -1). In stack[top] và giảm top.
void pop() {
if (top <= -1)
cout << "Stack Underflow" << endl;
else {
cout << "The popped element is " << stack[top] << endl;
top--;
}
}
Hàm display()
Duyệt từ top xuống 0 bằng vòng lặp for. Nếu rỗng in thông báo.
void display() {
if (top >= 0) {
cout << "Stack elements are: ";
for (int i = top; i >= 0; i--)
cout << stack[i] << " ";
cout << endl;
} else
cout << "Stack is empty";
}
Hàm main() - Menu
int main() {
int ch, val;
cout << "1) Push in stack" << endl;
cout << "2) Pop from stack" << endl;
cout << "3) Display stack" << endl;
cout << "4) Exit" << endl;
do {
cout << "Enter choice: " << endl;
cin >> ch;
switch(ch) {
case 1: {
cout << "Enter value to be pushed: " << endl;
cin >> val;
push(val);
break;
}
case 2: pop(); break;
case 3: display(); break;
case 4: cout << "Exit" << endl; break;
default: cout << "Invalid Choice" << endl;
}
} while(ch != 4);
return 0;
}