题目描述
一个初值为 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;
}
}
}
}
}