题解 | #输出单向链表中倒数第k个结点#

输出单向链表中倒数第k个结点

https://www.nowcoder.com/practice/54404a78aec1435a81150f15f899417d

#include <stdio.h>
#include <stdlib.h>
typedef struct ListNode
{
    int m_nKey;
    struct ListNode* m_pNext;
}ListNode;
int main() {
    int n,i;
    while (scanf("%d",&n) != EOF) { // 注意 while 处理多个 case
        ListNode *phead,*pbuf,*pnew;
        phead = (ListNode *)malloc(sizeof(ListNode));  //创建头节点
        phead->m_pNext = NULL;
        pbuf = phead;
        for(i=0;i<n;i++){                               //循环头插新节点,注意头插后节点是倒序的
            pnew = (ListNode *)malloc(sizeof(ListNode));
            scanf("%d",&pnew->m_nKey);
            pnew->m_pNext = pbuf->m_pNext;
            pbuf->m_pNext = pnew;
        }
        int pos,len=0;                                     
        scanf("%d",&pos);
        while(pbuf->m_pNext != NULL){                   //获取链表长度(根据题目要求忘记创建节点数n)
            pbuf = pbuf->m_pNext;
            len++;
        }
        pbuf = phead;
        for(i=0;i<pos;i++){                             //根据pos找到目标节点
            pbuf = pbuf->m_pNext;
        }
        printf("%d\n",pbuf->m_nKey);                    //打印目标节点数据
        for(i = 0;i<len;i++){                           //循环释放节点空间
            pbuf = phead->m_pNext;
            phead->m_pNext = pbuf->m_pNext;
            free(pbuf); 
        }
        free(phead);
    }
    return 0;
}

全部评论

相关推荐

07-07 12:47
门头沟学院 Java
码农索隆:竟然还真有卡体检报告的
点赞 评论 收藏
分享
07-10 11:08
门头沟学院 Java
投递京东等公司9个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务