栈队列链表算法总结
1.队列
struct queue{
int head;
int tail;
int a[1001];
};
2.栈
栈的基本操作:
定义栈:stack<int> S;
入栈(定义栈元素):S.push(i);
出栈(删除栈元素):S.pop();
返回栈顶元素的值:S.top();
判断栈是否为空:S.empty(); //值为0说明不空 值为1说明栈为空

//栈的用法实例 #include<iostream> #include<stack> using namespace std; int main() { stack<int> S;//声明栈S int n,m; cin>>n;//入栈的元素个数 //入栈 也就是给栈中的元素赋值 for(int i=0;i<n;i++) { cin>>m; S.push(m); //入栈 } //出栈 假设元素为偶数则出栈 while(!S.empty()) //当栈不为空时 { int t=S.top(); if(t%2==0) //栈顶元素为偶数则输出 { cout<<"出栈:"<<S.top()<<endl; } S.pop(); //出栈 } cout<<"此时栈里面元素个数为:"<<S.size()<<endl; }
需注意的问题:
我之前想要处理一堆数,遇到偶数就出栈输出,输出栈内部剩余的数
于是我这样做了(有问题代码):
1 //栈的用法实例 2 #include<iostream> 3 #include<stack> 4 using namespace std; 5 int main() 6 { 7 stack<int> S;//声明栈S 8 int n,m; 9 cin>>n;//入栈的元素个数 10 //入栈 也就是给栈中的元素赋值 11 for(int i=0;i<n;i++) 12 { 13 cin>>m; 14 S.push(m); 15 } 16 //出栈 假设元素为偶数则出栈 17 for(int i=0;i<n;i++) //循环n个元素 18 { 19 int t=S.top(); 20 if(t%2==0) //栈顶元素 注意:如果元素不为偶数,下面的都不会判断,因为它top指针不会往下面走 21 { 22 cout<<"出栈:"<<S.top()<<endl; 23 S.pop(); //出栈 24 } 25 } 26 cout<<"输出栈内现存元素:"<<endl; 27 //输出栈内现存元素 28 while(S.empty()==0) 29 { 30 cout<<S.top()<<" "; 31 S.pop(); 32 } 33 cout<<endl; 34 cout<<"此时栈里面元素个数为:"<<S.size()<<endl; 35 }
输入情况:
1 2 | 5 1 2 3 4 5 |
输出情况:
1 2 3 | 输出栈内现存元素: 5 4 3 2 1 此时栈里面元素个数为:0 |
我们可以发现一个问题:
它偶数2与4是没有出栈的(未被删除掉),为什么呢???
原因在于:上面5个元素入栈以后,栈顶元素此时为5,t%2!=0,所以不进行if(t%2==0)里面的操作,那么S.pop()就不会进行,top指针就一直不变(尽管for语句一直执行),t一直都等于5,所以也不会进行偶数出栈
解决方法:
如果要删除偶数,而输出奇数时,可以直接在判断偶数时就输出,S.pop()一直需要执行,top指针才会往下。
1 for(int i=0;i<n;i++) //循环n个元素 2 { 3 int t=S.top(); 4 if(t%2==0) //栈顶元素 注意:如果元素不为偶数,下面的都不会判断,因为它top指针不会往下面走 5 { 6 cout<<"出栈:"<<S.top()<<endl; 7 } 8 else 9 cout<<"奇数:"<<S.top()<<endl; 10 S.pop(); //出栈 11 }
例题:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!