目录
我们在写题时会经常用到栈,对吧。
小提示:所有知识点都在最后总结了
那我们先讲一下栈的基本概念:
栈的定义
栈(Stack):是只允许在一端进行插入或删除的线性表。首先栈是一种线性表,但限定这种线性
表只能在某一端进行插入和删除操作。
首先第一个知识点来了我们怎么定义栈呢?
1.用它本身:stack加<它的类型>加" "加名称加";"。这样理解下来有点困难对吧,直接点就时stack<它的类型> 名称;
如:你要定义一个int类型的栈——a,就时stack<int> a;
2.用数组:那简单直接,我在这里就不解释了哈。
第二个~~知识点——入栈
1.用它本身:就时它的名称加".push("加入栈的数或变量加");"
如:你要为a栈压入一个变量curry,就是
2.用数组:简单的很,我二大爷家的隔壁老王都会🤭,首先由一个变量作为数组的下标,就是
第三个知识点:获取栈顶元素
1.用它本身:定义一个变量,然后就OK了。
2.啊,懒得废话了直接看
第四个知识点:判断栈是否为空
1.直接简单直了栈不为空它返回0,反之返回1
2.直接判断sum的值就行了
第五个知识点:栈的大小
1.我们直接用就一切OK了
2.咳咳咳,数组的话不用讲了吧看sum的值就行了
最后一个知识点:删除
1.看懂了吧,这个就是删除栈顶元素
2.而数组,e......,我们物理上删除就行了
好的,代码展示环节
栈本身
#include<bits/stdc++.h>
#include<stack>
using namespace std;
stack<int> a;
int main()
{
for(int i=1;i<=10;i++)
{
a.push(i);
}
cout<<"栈顶为"<<a.top()<<endl;
if(!a.empty())
{
cout<<"栈不为空"<<endl;
}else{
cout<<"栈为空"<<endl;
}
cout<<"栈的大小为"<<a.size();
cout<<"栈中的数据一共有:";
for(int i=1;i<=10;i++)
{
int t=a.top();
cout<<t<<" ";
a.pop();
}
for(int i=1;i<=10;i++)
{
a.push(i);
}
cout<<endl<<"删除一个元素后为:";
a.pop();
for(int i=1;i<=10;i++)
{
int t=a.top();
cout<<t<<" ";
a.pop();
}
return 0;
}
用数组
#include<bits/stdc++.h>
using namespace std;
int a[100]={0};
int curry=0;
int push(int ans)//插入
{
a[curry]=ans;
curry++;
}
int pop()//弹出
{
if(curry>0)
{
a[curry]=0;
curry--;
}
}
int top()//取栈顶
{
if(curry==0)
{
return -1;
}
return a[curry-1];
}
int isEmpty()//栈是否为空
{
if(curry>0)
{
return 0;
}else{
return 1;
}
}
int size()//栈的大小
{
return curry;
}
int main()
{
for(int i=1;i<=10;i++)
{
push(i);
}
cout<<"栈顶为"<<top()<<endl;
if(isEmpty==0)
{
cout<<"栈不为空"<<endl;
}else{
cout<<"栈为空"<<endl;
}
cout<<"栈的大小为"<<size();
cout<<"栈中的数据一共有:";
for(int i=0;i<curry;i++)
{
cout<<a[i]<<" ";
}
cout<<endl<<"删除一个元素后为:";
pop();
for(int i=0;i<curry;i++)
{
cout<<a[i]<<" ";
}
return 0;
}
结束散会。
//不喜勿喷🙁