🔥前言
本专栏收录的均为牛客网的算法题目,内含链表、双指针、递归、动态规划、基本数据结构等算法思想的具体运用。牛客网不仅有大量的经典算法题目,也有大厂的面试真题,面试、找工作完全可以来这里找机会。此外,网站内的编码主题多样化,调试功能可运用性强,在这里刷题除了锻炼算法思想,同时也锻炼了根据要求自己设计输入输出的代码能力,可谓是非常注重用户体验。这么好的免费刷题网站还不快入手吗,快去注册开启算法百炼成神之路吧!(会在具体题目旁留下链接)
1、AB1 【模板】栈
对应题目链接:算法入门-AB1
题目叙述:
1.1、解题思路
此题第一个要求就是实现一个栈,因此切记不可直接包含stack头文件,而是自己模拟一个栈类,同时按照要求完善push、pop和top方法。
接下来注意输入描述的内容,从这里可以知道我们最多循环操作100000次,那么栈的容量就可以设置成这个数,同时栈的下标应该从-1开始。
输出描述就是三个方法的完善,通过分支语句if-else即可完成。
1.2、代码实现与解释
本题源码:
#include <iostream> using namespace std; class stack { int s[100000]; int index = -1; public: void push(int x) { index++; s[index] = x; } void top() { if (index < 0) cout << "error" << endl; else cout << s[index]<<endl; } void pop() { if (index < 0) cout << "error" << endl; else cout << s[index--] << endl; } }; int main() { stack s; int n; cin >> n; for (int i = 0; i < n; i++) { string op; cin >> op; if (op == "push") { int x; cin >> x; s.push(x); } else if (op == "pop") { s.pop(); } else if (op == "top") { s.top(); } } return 0; }
重要代码注释:
push方法用来压栈,让下标加一然后将值赋给数组里对应的位置
top方法其实就是打印栈顶的值,就是当前下标对应的值,由于题目要求需要加判断,如果栈空,打印error,还有一个细节就是输出都是单个占一行,因此牵扯到打印语句都要加endl
pop方法在top方法的基础上让栈顶指针减一,相当于让栈顶元素出栈
主函数中自己设计的输入输出代码,大家可以自行参考