10分链表求助!!过了样例
查看原帖
10分链表求助!!过了样例
836806
verachengzi楼主2023/3/1 19:16

就是类似领接表想法

#include<iostream>
#include<cstring>
using namespace std;
int n,m;
int T;
const int N=1e5+10;
int pos[N];
int h[N],e[N],ne[N],idx;
void add(int x,int u)
{
    // cout<<x<<' '<<u<<endl;
    int t;
    if(h[u]==-1) 
    {
        e[idx]=x;
        ne[idx]=-1;
        h[u]=idx++;
    }
    else
    {
        for(int i=h[u];i!=-1;i=ne[i])if(i!=-1) t=i; 
        e[idx]=x;
        ne[idx]=-1;
        ne[t]=idx++;
    }
}
void erase(int i)
{
    h[i]=ne[h[i]];
}
int main()
{
    memset(h,-1,sizeof h);
    cin>>n>>m;
    for(int i=0;i<n;i++)
    {
        cin>>pos[i];
    }
    cin>>T;
    string a;
    while(T--)
    {
        cin>>a;
        if(a=="push")
        {
            int x;
            cin>>x;
            if(x<n&&x>=0) add(x,pos[x]);
            else add(x,0);
        }
        else
        {
            for(int i=n-1;i>=0;i--)
            {
                if(h[i]!=-1) 
                {
                    cout<<e[h[i]]<<endl;
                    erase(i);
                    break;
                }
            }
        }
        // cout<<h[0]<<endl;
    }

}
2023/3/1 19:16
加载中...