TLE80分,求助!
  • 板块B3631 单向链表
  • 楼主H_first
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/10/13 23:55
  • 上次更新2024/10/14 13:41:10
查看原帖
TLE80分,求助!
1412615
H_first楼主2024/10/13 23:55
#include<iostream>
#include<cstdio>

using namespace std;
const int N=100010;
int head,idx,e[N],ne[N];

void init()
{
    head=-1;
    idx=0;
}
void inhead(int x)
{
    e[idx]=x;
    ne[idx]=head;
    head=idx++;
}
void insert(int k,int y)//在索引为k的位置的后面插入y
{
    e[idx]=y;
    ne[idx]=ne[k];
    ne[k]=idx++;
}
void rem(int k)
{
    ne[k]=ne[ne[k]];
}
int find(int x)//找到值为x的指针(索引)
{
    int cu=head;
    while(cu!=-1)
    {
        if(e[cu]==x) return cu;
        else cu=ne[cu];
    }
    return -1;;
}

int main()
{
    init();
    inhead(1);//最初链表的一个元素“1”
    int q;
    scanf("%d",&q);
    while(q--)
    {
        int s,x,y;
        scanf("%d %d",&s,&x);
        int k=find(x);
        if(s==1)
        {
        	scanf("%d",&y);
        	insert(k,y);
		}
        else if(s==2)
        {
            if(ne[k]==-1) printf("0\n");
            else printf("%d\n",e[ne[k]]);
        }
        else rem(k);
    }
    return 0;
}
2024/10/13 23:55
加载中...