#include<iostream> using namespace std; const int Stacksize=10;//数组长度 template <class T> //顺序栈 class seqstack { public: seqstack(){top=-1;}//初始化一个空栈 ~seqstack(){}; void push(T x);//入栈 T pop();//出栈 将栈顶元素弹出 T gettop();//获取栈顶元素 int Empty(); void printstack(); private: T data[Stacksize];//存放栈元素的数组 int top;//栈顶元素在数组中的下标 //长度sta为5 top指向0-4 }; template <class T> void seqstack<T>::push(T x) { if(top==Stacksize-1) throw'上溢'; top=top++; data[top]=x; } template<class T> T seqstack<T>::pop() { //T x; if(top==-1) throw'空栈,无法取出'; // x=data[top--]; return data[top]; top--; } template<class T> T seqstack<T>::gettop() { return data[top]; } template<class T> void seqstack<T>::printstack() { while(top!=-1) { cout<<data[top]<<' '; top--; } cout<<endl; } int main() { int i; int y; seqstack<int> s; cout<<"进行入栈"<<endl; s.push(5); s.push(15); s.printstack(); s.push(90); s.push(3); cout<<"获取栈顶元素"<<endl; cout<<s.gettop()<<endl;; cout<<"执行出栈操作"<<endl; i=s.pop(); cout<<i<<endl; cout<<"获取栈顶"<<endl; y=s.gettop(); cout<<y<<endl; }
时间: 2024-01-31 16:04:05 浏览: 72
这段代码有一些错误,我帮您修改一下:
```c++
#include<iostream>
using namespace std;
const int Stacksize = 10; //数组长度
template <class T> //顺序栈
class seqstack {
public:
seqstack() { top = -1; } //初始化一个空栈
~seqstack() {};
void push(T x); //入栈
T pop(); //出栈 将栈顶元素弹出
T gettop(); //获取栈顶元素
int Empty();
void printstack();
private:
T data[Stacksize]; //存放栈元素的数组
int top; //栈顶元素在数组中的下标
//长度sta为5 top指向0-4
};
template <class T>
void seqstack<T>::push(T x) {
if (top == Stacksize - 1) throw '上溢';
top++; //修正top的值
data[top] = x;
}
template<class T>
T seqstack<T>::pop() {
if (top == -1) throw '空栈,无法取出';
T x = data[top];
top--; //修正top的值
return x;
}
template<class T>
T seqstack<T>::gettop() {
return data[top];
}
template<class T>
void seqstack<T>::printstack() {
int t = top;
while (t != -1)
{
cout << data[t] << ' ';
t--;
}
cout << endl;
}
int main() {
int i;
int y;
seqstack<int> s;
cout << "进行入栈" << endl;
s.push(5);
s.push(15);
s.printstack();
s.push(90);
s.push(3);
cout << "获取栈顶元素" << endl;
cout << s.gettop() << endl;;
cout << "执行出栈操作" << endl;
i = s.pop();
cout << i << endl;
cout << "获取栈顶" << endl;
y = s.gettop();
cout << y << endl;
}
```
主要的修改如下:
1. 在 `seqstack` 类模板中,修正了 push 和 pop 函数中 top 的赋值错误,现在程序可以正常入栈和出栈了。
2. 在 `seqstack` 类模板中,修正了 pop 函数中返回值的问题,现在可以正确返回出栈的元素值。
3. 在 `seqstack` 类模板中,修正了 printstack 函数中 top 的值被修改的问题,现在可以正常输出栈中的元素了。
阅读全文