其实直接算链表长度-k就行了
上次写的双向链表出了问题,就再写了一次。返回尾指针即可
#include<cstdio>
#include<cstring>
#include<cstdlib>
typedef struct node
{
int val;
struct node *next;
struct node *pre;
}Sqlist;
int n,k;
Sqlist *create()
{
Sqlist *l1,*l2,*temp;
l1 = (Sqlist *)malloc(sizeof(Sqlist));
scanf("%d",&l1->val);
l2 = l1;
for(int i=1;i<n;++i)
{
l1 = (Sqlist *)malloc(sizeof(Sqlist));
scanf("%d",&l1->val);
l2->next = l1;
temp = l2;
l2 = l1;
l2->pre = temp;
}
return l2; //尾指针
}
int main()
{
while(scanf("%d%d",&n,&k) != EOF)
{
Sqlist *list;
list = create();
if(k == 0 || k > n)
{
printf("NULL\n");
continue;
}
int count = 1;
while(count != k)
{
list = list->pre;
count++;
}
printf("%d\n",list->val);
}
return 0;
}