题解 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;
        }
    }
}

全部题解就我一个写链表,管理员大大没必要卡我吧