Problem C.链表操作(2019网研院)

Querida ·
更新时间:2024-09-21
· 615 次阅读

题目描述

一个初值为 1,2,3,4,…,n的n(0<n<=50)个节点的顺序链表,有以下3种操作方式:
1 移除节点值为x的节点
2 翻转链表,对调整个链表的顺序
3 查询链表值为x的节点所指的下一个节点的值

输入:

第一行输入T,表示数据的组数 每组第一行输入 n (表示节点数目) m (表示操作数目) 接下来m行分别输入 ope (操作方式) x (操作的节点值,操作方式为2时不会输入该值)

输出:

输出操作为3查询时,所查节点所指的下一个节点值,若没有查到或查到的节点为表尾 (没有下一节点),输出"NONE"

样例输入

1 6 6 3 6 1 2 3 1 2 1 5 3 6

样例输出

NONE 3 4 #include using namespace std; int main() { int T; cin>>T; while(T--) { int n,m; int link[55]; memset(link,0,sizeof(link)); cin>>n>>m; for(int i=1; i>ope; if(ope==1) { cin>>x; for(int i=1; i<=n; i++) { if(link[i]==x) link[i]=0; } } if(ope==2) { int tmp; for(int i=1,j=n; in/2; i++,j--) { tmp=link[i]; link[i]=link[j]; link[j]=tmp; } } if(ope==3) { cin>>x; int flag=0; for(int i=1; i<=n; i++) { if(link[i]==x&&(i+1)<=n){ for(int j=i+1;j<=n;j++){ if(link[j]!=0){ cout<<link[j]<<endl; flag=1; break; } } } } if(flag==0){ cout<<"NONE"<<endl; } } } } }
作者:July_zh



problem 链表

需要 登录 后方可回复, 如果你还没有账号请 注册新账号