今日活动:打金刚功,吃饭,睡觉,写代码。
开始刷队列和栈的题组了,首先栈是先进后出,队列是先进先出。tq学长写了个最典型的队列和栈的代码:
输入n个数,再输出。
//队列
#include<iostream>
using namespace std;
const int max_n=1e5+10;
int Q[max_n];
int front,back;
void push(int x) {
Q[back++]=x;
}
int pop() {
return Q[front++];
}
int main()
{
int n;
cin>>n;
while(n--) {
int x;
cin>>x;
push(x);
}
while(front<back) {
cout<<pop()<<endl;
}
}
//栈?
#include<iostream>
using namespace std;
const int max_n=1e5+10;
int Q[max_n]; //定义一个栈?
int top; ?//栈顶?
void push(int x) {
?? ?Q[top++]=x;
}
int pop() {
?? ?return Q[--top];
}
int main()
{
?? ?int n;
?? ?cin>>n;
?? ?for(int i=0;i<n;i++) {
?? ??? ?int x;
?? ??? ?cin>>x;
?? ??? ?push(x);
?? ?}
?? ?
?? ?for(int i=0;i<n;i++) {
?? ??? ?cout<<pop()<<endl;
?? ?}
}
栈和队列输出的结果相反。
其实也就是靠着下标的移动来处理数组的大小,但是我认为用stack和queue函数处理也是差不多的,只不过名字比较多,记起来麻烦。
还有就是今天讲的知识,链表的话不看代码实在有些迷惑,听说有个list函数是和链表有关的,准备去看看。迷宫那个dfs,bfs我是完全听懵了。
|