【數據結構】單鏈表—遞歸輸出倒數第k個元素

在不改變單鏈表的前提下,請查找鏈表中倒數第k(k爲整數)個位置的結點。

#include<stdio.h>
#include<stdlib.h>
struct Lnode
{
    int data;
    Lnode *next;
    
};
int Init(struct Lnode *L, int i)
{
    struct Lnode *p;
    struct Lnode *q=L;
    int j=0;
    while(j<i)
    {
        p = (struct Lnode *)malloc(sizeof(struct Lnode));
        scanf("%d",&(p->data));
        p->next =NULL;
        q->next = p;
        q= p;
        j++;
    }
    return 0;
}
int findelem(struct Lnode *head, int k,int *i,int num)
{
    if(head->next!=NULL)
    {
        k= findelem(head->next,k,i,++num);
        if(k==1)
        {
            *i = head->data;
            return --k;
        }
        else 
                return --k;    
    }
    else
    {
        if(num<k)
        {
            printf("不存在倒數%d個元素",k);
            return 0;
        }
        else
        {
            *i = head->data;
            return --k;
        }
            }
}
int main()
{
    struct Lnode Head;
    struct Lnode *L=&Head;
    L->next = NULL;
    int j= 5;
    Init(L,j);
    int i,k;
    printf("請輸入k的值:\t");
    scanf("%d",&k);
     findelem(L,k,&i,0);
    printf("倒數第%d個元素是:%d",k,i);
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章