链表中倒数第k个结点

来源:互联网 发布:linux清空tmp 编辑:程序博客网 时间:2024/05/18 01:48

题目描述:
输入一个链表,输出该链表中倒数第k个结点。

输入:
输入可能包含多个测试样例,输入以EOF结束。对于每个测试案例,输入的第一行为两个整数n和k(0<=n|k<=1000)n代表将要输入的链表元素的个数,k代表要查询倒数第几个的元素。输入的第二行包括n个数t(1<=t<=1000000):代表链表中的元素。

输出:
对应每个测试案例,若有结果,输出相应的查找结果。否则,输出NULL。

样例输入:
5 2
1 2 3 4 5
1 0
5
样例输出:
4
NULL

#include<stdio.h>#include<stdlib.h>typedef struct node    {    int data;    struct node  *next;    }Lnode ,*Linklist;Linklist creatLinklist(int n){    Linklist H=NULL;    Lnode *s,*r;    int x;    for(int i=0;i<n;i++)    {        scanf("%d",&x);        s=(Lnode *)malloc(sizeof(Lnode));        s->data=x;        if(H==NULL) H=s;        else r->next=s;        r=s;    }    if(r!=NULL)  r->next=NULL;    return H;}void Get_Lnode(Linklist H,int i){    Lnode *p=H;    int j=1;    while(j<i)    {        p=p->next;        j++;    }    printf("%d\n",p->data);}int main(){    int n,k;    while(scanf("%d",&n)!=EOF)    {        scanf("%d",&k);        Linklist H=creatLinklist(n);        if(k>n) printf("%s\n","NULL");        else        Get_Lnode(H,n-k+1);    }}
0 0
原创粉丝点击