//https://www.nowcoder.com/practice/54404a78aec1435a81150f15f899417d?tpId=37&tqId=21274&rp=1&ru=/exam/oj/ta&qru=/exam/oj/ta&sourceUrl=%2Fexam%2Foj%2Fta%3Fpage%3D1%26tpId%3D37%26type%3D37&difficulty=undefined&judgeStatus=undefined&tags=&title=
#include <iostream>
#include <malloc.h>
using namespace std;
typedef struct ListNode{
int m_nkey;
ListNode* m_pNext;
}Node, *LinkList;
int InitList(LinkList &L){
LinkList tem = (LinkList)malloc(sizeof(Node)); //? malloc <malloc.h>
if(!tem)
exit(-2); //? exit() 使程序再main外停止 OVERFLOW
tem->m_pNext = NULL; //?指向运算符
L = tem;
return 1; //OK
}
void CreatList(LinkList &L, int n){ //? 为什么要加引用
// int n = 0;
int temnum = 0;
LinkList rear = NULL;
// cin >> n;
for(int i = n;i>0;i--){
LinkList tem = (LinkList)malloc(sizeof(Node));
cin >> temnum;
tem->m_nkey = temnum;
tem->m_pNext = tem;
if(i==n){
rear = tem;
L->m_pNext = tem;
}else{
rear->m_pNext = tem;
rear = tem;
}
}
}
LinkList getElem(LinkList L){
LinkList head = L;
// LinkList rear = NULL;
int k = 0;
cin >> k;
for(int i = k;i>0;i--){
L = L->m_pNext;
if(L==L->m_pNext&&i>1)
return NULL;
}
head = head->m_pNext;
while(L!=L->m_pNext){
L = L->m_pNext;
head = head->m_pNext;
}
return head;
}
void ClearList(LinkList &L){
LinkList p = NULL;
LinkList q = NULL;
p = L->m_pNext;
while(p!=p->m_pNext){
q = p->m_pNext;
free(p);
p = q;
}
free(p);
L->m_pNext = NULL;
}
int main(){
LinkList L, ans;
int n = 0;
while(cin >> n){
InitList(L);
CreatList(L, n);
if((ans=getElem(L))!=NULL)
cout << ans->m_nkey << endl;
ClearList(L);
free(L);
}
}