题解 P1165 【日志分析】
看到楼下各位大佬写栈;所以蒟蒻觉定来一篇单向链表的; 链表:链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。(摘自百度)
单向链表有一个指针,有一个值,值就是读入的入库,指针指向下一个单位
这题实际上单向链表跟栈的区别不大,大家可以多参考其他楼,蒟蒻发这篇题解只是让大家了解栈的题目可以用链表做
为了方便大家理解代码,蒟蒻把链表的STL函数给大家讲一下
empty()//用来判断这个链表是不是空的,是空的返回1,否者返回0
push_back()//在链表的尾部插入一个元素,系统并会自动的把指针指向这;
pop_back()//从尾部删除一个元素;
.back()//访问链表的最后一个元素;
废话不说,上代码(代码应该能自己理解)
#include<bits/stdc++.h>
using namespace std;
list<int> s;
list<int> c;
int kk=0;//统计链表里的元素个数;
int main()
{
int n;
scanf("%d",&n);
int k,p,ss=0;
for(int i=1;i<=n;i++)
{
scanf("%d",&k);
if(k==0)
{
kk++;
cin>>p;
int t=s.empty() ? p : max(p,s.back());//判断这个链表是不是空的
s.push_back(t);//插入;
}
if(k==1)
{
kk--;
s.pop_back();
}
if(k==2)
{
if(kk==0)
cout<<"0"<< endl;
else
cout<<s.back()<< endl;
}
}
}
全部题解就我一个写链表,管理员大大没必要卡我吧