-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathArrayStack.h
More file actions
110 lines (102 loc) · 2.45 KB
/
ArrayStack.h
File metadata and controls
110 lines (102 loc) · 2.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
//
// Created by 汪晓成 on 2019/9/28.
//
#ifndef HW3_ARRAYSTACK_H
#define HW3_ARRAYSTACK_H
#include <iostream>
using namespace std;
template <class T>
class Stack {
public:
void Clear();
bool Push(const T item);
bool Pop(T& item);
bool Top(T& item);
bool IsEmpty();
bool IsFull;
};
template <class T>
class ArrayStack : public Stack<T> {
public:
ArrayStack(int size)
{
maxSize = size;
top = -1;
st = new T[maxSize];
}
ArrayStack()
{
top = -1;
}
~ArrayStack()
{
delete[] st;
}
void Clear()
{
top = -1;
}
/*
TODO:1.3-a. 入栈操作,并判断栈是否为满,若栈已满,则打印cout << "栈满溢出" << endl;返回false。否则将item入栈,返回true
返回值说明:成功入栈,返回true,否则返回false。
*/
bool Push(const T item)
{
if(top==maxSize-1)
{
cout << "栈满溢出" << endl;
return false;
}
else
{
top++;
st[top]=item;
return true;
}
}
/*
TODO:1.3-b 出栈操作,并判断栈是否为空,若为空,则打印cout << "栈为空,不能进行删除操作" << endl;返回false。
否则,将栈顶元素的值取出来赋值给item,进行出栈操作,返回true
返回值说明:如果出栈成功,返回true,否则返回false。
*/
bool Pop(T& item)
{
if(top==-1)
{
cout << "栈为空,不能进行删除操作" << endl;
return false;
}
else
{
item=st[top];
top--;
return true;
}
}
/*
TODO:1.3-c 读取栈顶元素,但不删除,判断栈是否为空,若为空,则打印cout << "栈为空,不能读取栈顶元素" << endl;返回false
否则,将栈顶元素取出,并赋值给item,返回true。
返回值说明:成功读取栈顶元素,返回true,否则返回false。
*/
bool Top(T& item)
{
if(top==-1)
{
cout << "栈为空,不能读取栈顶元素" << endl;
return false;
}
else
{
item=st[top];
return true;
}
}
bool IsEmpty(){
return top == -1;
};
private:
int maxSize; //栈中最多保存的元素个数
int top; //指向栈顶,初始化为-1,入栈时top+1,出栈时top-1
T* st; //栈
};
#endif //HW3_ARRAYSTACK_H