栈是一种只允许在一端进行插入和删除操作的线性表
栈:有 空栈、进栈、栈顶与栈底元素、出栈
栈的特性:后进先出
栈的创建:本质还是栈线表,因此可以创建一个足够大的数组,充当栈结构,再定义一个变量n,用来记录栈中元素个数,同时好可以标记栈顶的位置
const int N = 1e5 + 10;
int stk[N],n;
int main()
{
return 0;
}
进栈:本质就是 顺序表的尾插操作
const int N = 1e5 + 10;
int stk[N],n;
void push(int x)
{
stk[++n] = x;
}
int main()
{
return 0;
}
出栈:不用真的删除元素,只用将元素个数减1,就相当于删除栈顶元素
类比:顺序表的尾删
const int N = 1e5 + 10;
int stk[N],n;
void pop()
{
n--;
}
int main()
{
return 0;
}
查询栈顶元素:因为栈的特殊规定,不支持遍历整个栈中的元素,因此,需要查找栈中元素的时候,中能查找到栈顶元素
const int N = 1e5 + 10;
int stk[N],n;
void top()
{
return stk[n];
}
//判断是否为空
bool empty()
{
return n == 0;
}
//查询有效元素个数
int size()
{
return n;
}
int main()
{
return 0;
}
sract 创建 stack<T. st; T 可以是任意类型的数据 需要头文件 #include<stack>
size:返回栈里实际元素个数
empty:返回栈是否为空
push:进栈
pop:出栈
top:返回栈顶元素,但不会删除栈顶元素
int main()
{
stack<int> st;
//先进栈
for(int i = 1; i ,= 10; i++)
{
st.push(i);
}
while(st.size())
{
cout << st.top() << endl;
st.pop();
}
return 0;
}