线性表及栈与队列的实现 -- 栈

1.问题描述:
针对线性表或栈或队列(三者任选一种逻辑结构),按要求完成类(模板)的实现,并使用提供的main函数测试程序。

2.完成时有几种选择:
a.栈的实现。 b. 队列的实现。 c. 线性表的实现。

这里是栈的实现。务必按照提供的代码为基础进行补充。

template
class Stack {
public:
Stack(); //构造函数
bool empty() const ; //判断S是否为空栈
bool full() const; //判断栈S是否为满,
~Stack(); //将栈S清空
int size() const; //求栈S的长度,即栈S中的元素的个数
T & top() const; //返回栈S的栈顶元素
void push( const T &e ); //入栈操作,将数据元素e插入栈S的当前栈顶
T & pop(); //出栈操作,删除栈S的栈顶元素,并返回其值
private:
// 补充
};

//测试的main函数
int main() {
Stack sc; //stack of char
Stack si; //Stack of int
char ch = ' ';
// 不断输入字符到栈中,=结束
while (ch != '=') {
cin >> ch;
if (ch == 'a')
sc.push('A');
sc.push(ch);
}
cout << "top=" << sc.top() << "size=" << sc.size() << endl;
cout << "pop " << sc.pop() << endl;
while (!sc.empty())
cout << sc.pop()<< " ";
cout << endl;

 int x = 1;
 // 不断输入int到栈中,0结束
while (x != 0) {
     cin >> x;
     if (x > 10)
         si.push(10000);
     si.push(x);
 }
 cout << "top=" << si.top() << "size=" << si.size() << endl;
 cout << "pop " << si.pop() << endl;
 while (!si.empty())
     cout << si.pop()<< "/";
 cout << endl;

 return 0;

}

急求,用c++补充

#include<iostream> 
#include<cstdlib> 
using namespace std;

#define MAX 100

template <typename T>
class Stack {
public:
Stack(); //构造函数
bool empty() const ; //判断S是否为空栈
bool full() const; //判断栈S是否为满,
~Stack(); //将栈S清空
int size() const; //求栈S的长度,即栈S中的元素的个数
T & top() const; //返回栈S的栈顶元素
void push( const T &e ); //入栈操作,将数据元素e插入栈S的当前栈顶
T & pop(); //出栈操作,删除栈S的栈顶元素,并返回其值
private:
// 补充
T data[MAX];
int cur;
};

Stack::Stack()
{
    cur = 0;
}

bool Stack::empty() const
{
    cur = 0;
}

bool Stack::full() const
{
    return cur >= MAX;
}

Stack::~Stack() {}

int size() const { return cur; }

T & Stack::top()
{
    if (cur == 0) throw "stack is empty";
    return data[cur - 1];
}

void Stack::push( const T &e )
{
    if (cur >= MAX) throw "stack is full";
    data[cur++] = e;
}

T & Stack::pop()
{
    if (cur == 0) throw "stack is empty";
    return data[--cur];
}

//测试的main函数
int main() {
Stack sc; //stack of char
Stack si; //Stack of int
char ch = ' ';
// 不断输入字符到栈中,=结束
while (ch != '=') {
cin >> ch;
if (ch == 'a')
sc.push('A');
sc.push(ch);
}
cout << "top=" << sc.top() << "size=" << sc.size() << endl;
cout << "pop " << sc.pop() << endl;
while (!sc.empty())
cout << sc.pop()<< " ";
cout << endl;

 int x = 1;
 // 不断输入int到栈中,0结束
while (x != 0) {
     cin >> x;
     if (x > 10)
         si.push(10000);
     si.push(x);
 }
 cout << "top=" << si.top() << "size=" << si.size() << endl;
 cout << "pop " << si.pop() << endl;
 while (!si.empty())
     cout << si.pop()<< "/";
 cout << endl;

 return 0;
}

如果问题解决,请采纳下毕小宝的回答。如果还有问题,请追问

C++ 实现栈的方法:https://www.cnblogs.com/zfc-java/p/6664330.html
C++ 实现线性表的方法:https://blog.csdn.net/qq_30611601/article/details/79516986
可以直接将代码拷贝到 https://tool.lu/coderunner 在线运行看结果。