c++栈问题疑问………………

定义栈顶int top为什么不是int *top
栈空判断top==-1和top ==base栈满判断top==stacksize-1与top-base==stacksize
都行吗?求助图片说明

只要记住栈顶的下标就行了。
栈底一般是固定的,如果你初始化的时候将base置为-1了,那么top==stacksize-1与top-base==stacksize是一样的

一个简单实现:

 #include<iostream>
using namespace std;

class Stack
{
public:
Stack()
{
top=-1;
}
bool push(int n)//压栈
{
if(!isfull())
data[++top]=n;
else
return false;
return true;
}
bool pop()//退栈
{
if(!isempty())
top--;
else
return false;
return true;
}
int gettop()//得到栈顶元素
{
return data[top];
}
bool isempty()//判断是否为空
{
return top==-1?true:false;
}
bool isfull()//判断是否已满
{
return top==9?true:false;
}
private:
int data[10];
int top;
};

int main()
{
Stack s;//建立一个栈
if(!s.push(10))//将10入栈;
{
cout<<"栈溢出"<<endl;
return 0;
}
if(!s.push(12))//将12入栈;
{
cout<<"栈溢出"<<endl;
return 0;
}
if(!s.push(14))//将14入栈;
{
cout<<"栈溢出"<<endl;
return 0;
}
cout<<s.gettop()<<endl;//读出并输出栈顶元素;
s.pop();//退栈
cout<<s.gettop()<<endl;//读出并输出栈顶元素;
}

因为栈其实使用数组保存数据,所谓的栈顶其实就是stock[top],即下标为top的数组成员,所以这里就不能用指针了,因为这里是一个具体数,当然也可以使用栈顶指针来表示栈顶,但实现与这个会有所不同!

因为栈其实使用数组保存数据,所谓的栈顶其实就是stock[top],即下标为top的数组成员,所以这里就不能用指针了,因为这里是一个具体数,当然也可以使用栈顶指针来表示栈顶,但实现与这个会有所不同.