Cài đặt Stack số nguyên bằng mảng một chiều trong C++
| Cài đặt Stack số
nguyên bằng mảng một chiều trong C++
Khai báo Stack
struct Stack
{
int Top;
int Data[MAX];
};
Prototype
void init(Stack&);
bool
IsEmpty(Stack);
bool IsFull(Stack);
void Push(Stack&, int);
int Peek(Stack);
int Pop(Stack&);
void Input(Stack&);
void Output(Stack);
void Menu();
void
XuLyMenu(Stack&);
Main.cpp
#include <iostream>
using namespace std;
#define MAX 100
int main()
{
int x;
Stack s;
init(s);
Input(s);
Output(s);
Menu();
while (true)
XuLyMenu(s);
system("pause");
return 0;
}
Khởi tạo Stack
void init(Stack& s)
{
s.Top = 0;
}
IsEmpty: Kiểm tra Stack
rỗng hay không
int
IsEmpty(Stack s)
{
return (s.Top ==
0);
}
IsFull: Kiểm tra Stack
đầy hay không
int IsFull(Stack s)
{
return (s.Top == MAX);
}
Push phần tử vào Stack
void Push(Stack& s, int x)
{
if (!IsFull(s))
{
s.Data[s.Top] = x;
s.Top++;
}
else cout << "Stack
day.\n";
}
Pop: Lấy phần tử và xoá
khỏi Stack
int Pop(Stack& s)
{
if (!IsEmpty(s))
{
s.Top--;
return s.Data[s.Top];
}
else cout << "Stack
rong.\n";
}
Peek: Lấy phần tử nhưng
không xoá khỏi Stack
int Peek(Stack s)
{
return s.Data[s.Top -
1];
}
Hàm nhập
void Input(Stack& s)
{
int n;
int x;
do
{
cout << "Nhap
so phan tu cua Stack: ";
cin >> n;
} while (n > MAX || n
< 1);
for (int i = 0;
i < n; i++)
{
cout << "Nhap
phan tu thu " << i << ":
";
cin >> x;
Push(s, x);
}
}
Hàm xuất
void Output(Stack s)
{
if (IsEmpty(s))
cout << "Stack
rong.\n";
else
{
cout << "Xuat
Stack: ";
for (int i = s.Top -
1; i >= 0; i--)
{
cout << s.Data[i]
<< " ";
}
cout << endl;
}
}
Xuất danh sách Menu
void Menu()
{
cout << "\n1.
Kiem tra Stack rong hay khong?";
cout << "\n2.
Kiem tra Stack day hay khong?";
cout << "\n3.
Push phan tu vao Stack.";
cout << "\n4.
Pop phan tu tu Stack.";
cout << "\n5.
Xem phan tu o dau Stack.";
cout << "\n6.
Xuat Stack.";
cout << "\n7.
Thoat.";
cout << endl;
}
Xử lý Menu với lựa chọn
tương ứng
void
XuLyMenu(Stack& s)
{
int luachon;
do
{
cout << "\nNhap
lua chon: ";
cin >>
luachon;
switch (luachon)
{
case 1:
{
if
(IsEmpty(s))
cout << "Stack
rong.\n";
else cout << "Stack
khong rong.\n";
break;
}
case 2:
{
if
(IsFull(s))
cout << "Stack
day.\n";
else cout << "Stack
khong day.\n";
break;
}
case 3:
{
int x;
cout << "Nhap
gia tri phan tu can push: ";
cin >> x;
Push(s, x);
Output(s);
break;
}
case 4:
{
cout << "Phan
tu da pop: " << Pop(s) << endl;
Output(s);
break;
}
case 5:
{
cout << "Phan
tu o dau Stack: " << Peek(s) << endl;
break;
}
case 6:
{
Output(s);
break;
}
case 7:
exit(1);
break;
}
} while (luachon < 1 || luachon
> 6);
}
Nhận xét
Đăng nhận xét