求助简单单链表
  • 板块学术版
  • 楼主houluyu
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/7/14 09:17
  • 上次更新2023/11/3 09:58:56
查看原帖
求助简单单链表
690243
houluyu楼主2023/7/14 09:17
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int lis[100005],next1[100005];//next[i]指向第i个数的后一个数 
int q,len; 
int s,a,b;
int main()
{
	lis[++len]=1;
	next1[0]=1;//next[0]相当于一个指针,就指向第一个元素 
	scanf("%d",&q);
	for(int i=1;i<=q;i++)//需要支持下面的操作,//应该是一定会找到的,一定在链表中是合法的 
	{
		scanf("%d",&s);
		if(s==1)
		{
			scanf("%d%d",&a,&b);//将b插入到a后面 
			for(int j=next1[0];j;j=next1[j]) //且保证任何时间表中所有数字均不相同 
			{
				if(lis[j]==a)
				{
					lis[++len]=b;
					next1[len]=next1[j];
					next1[j]=len;
					break;//无所谓,在循环完也没事 
				}
			}
		}
		if(s==2)
		{
			scanf("%d",&a);//询问 xx 后面的元素是什么
			for(int j=next1[0];j;j=next1[j])
			{
				if(lis[j]==a)
				{
					printf("%d\n",lis[next1[j]]);
				 } 
			 } 
		}
		if(s==3)
		{
			scanf("%d",&a);
			for(int j=next1[0];j;j=next1[j])
			{
				if(lis[j]==a)
				{
					next1[j]=next1[next1[j]];
				}
			}
		}
			 
	}
	return 0;


}

这个题 最后两个点TLE了,不知道怎么才能节省时间

2023/7/14 09:17
加载中...