一、题目
二、解题思路
- 结构体数组的下标表示该节点的地址,value 表示该节点的值,nextkey 表示下一个结点的地址。
- 输入的节点不一定都属于这个链表:将此链表中的节点按顺序存储在数组中,并记录合法节点的个数 k ,数组中存放的是各节点的地址。
- 按照题目指定的顺序输出,注意考虑合法节点个数的奇偶性以及最后一个节点的下一个结点的地址为 -1 。
三、代码
#include<iostream>
using namespace std;
struct List
{
int value,nextkey;
}a[100005];
int main()
{
int index,n,result[100005];
cin>>index>>n;
for(int i=0;i<n;i++)
{
int key;
cin>>key;
cin>>a[key].value>>a[key].nextkey;
}
int k=0;
while(index!=-1)
{
result[k++]=index;
index=a[index].nextkey;
}
int i=0,j=k-1,cot=0;
for(;cot<(k+1)/2-1;i++,j--,cot++)
{
printf("%05d %d %05d\n",result[j],a[result[j]].value,result[i]);
printf("%05d %d %05d\n",result[i],a[result[i]].value,result[j-1]);
}
if(k%2==0)
{
printf("%05d %d %05d\n",result[j],a[result[j]].value,result[i]);
}
printf("%05d %d -1\n",result[i],a[result[i]].value);
return 0;
}
四、总结
输入的节点不一定都属于这个链表(测试点 3 )。