这道题很简单 写题解主要是为了能够练习双向链表的处理
需要注意的是 在只有一个元素的时候,需要对tail尾部指针进行特殊处理,使得head=tail
#include <cstdio> #include <cmath> #include <algorithm> #include <iostream> #include <string> #include <cstring> #include <cstdio> #include <sstream> #include <stack> #include <map> using namespace std; typedef long long ll; struct node{ int data; node *next; node *pre; }; int main() { int n,i,j; while(cin>>n){ int t,k; node *head,*p,*q,*tt,*tail; cin>>t; head=new node(); head->data=t; head->next=NULL; head->pre=NULL; p=head; for(i=2;i<=n;i++){ cin>>t; q=new node(); q->data=t; q->next=NULL; q->pre=p; p->next=q; p=p->next; } tail=q; if(n==1) tail=head; i=1; cin>>k; tt=tail; while(i!=k){ i++; tt=tt->pre; } cout<<tt->data<<endl; } return 0; }