按照《数据结构与算法(张铭编著)》课本要求敲的👇
#include<iostream>
using namespace std;
class arrstack
{
private:
int size;
int top;
char* st;
public:
arrstack(int csize)
{
size = csize;
top = -1;
st = new char(size);
}
arrstack()
{
top = -1;
}
~arrstack()
{
delete[]st;
}
void clear();
bool push(char& a);
bool pop(char& a);
bool ctop(char& a);
};
void arrstack::clear()
{
top = -1;
}
bool arrstack::push(char& a)
{
if (top == (size - 1))
{
/*cout << "stack is already full." << endl;
return false;*/
char* newst = new char(2 * size);
for (int i = 0; i < size; i++)
{
newst[i] = st[i];
}
delete st;
st = newst;
size *= 2;
}
st[++top] = a;
return true;
}
bool arrstack::pop(char& a)
{
if (top == -1)
{
cout << "stack is already empty." << endl;
return false;
}
a = st[top--];
return true;
}
bool arrstack::ctop(char& a)
{
if (top == -1)
{
cout << "stack is already empty." << endl;
return false;
}
else
{
a = st[top];
return true;
}
}