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

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

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

#include <stdio.h>
#include <stdlib.h>

typedef struct ListNode {
    int m_nKey;
    struct ListNode* M_pNext;
} NODE;

int main() {
    int num = 0;
    int data[1000] = {0};
    int k = 0;
    int* p = data;

    while (1) {
        scanf("%d", &num);
        scanf("%d", &data[0]);

        /*定义头节点*/
        NODE* head = (NODE*)malloc(sizeof(NODE));
        head->m_nKey = data[0];
        head->M_pNext = NULL;
        /*定义头指针*/
        NODE* headp = NULL;
        headp = head;
        /*定义K指示指针*/
        NODE* prenode = NULL;
        p++;
        if (scanf("%d", p) == EOF) {
            break;
        }
        for (int i = 2; i <= num; i++) {
            p++;
            scanf("%d", p);
        }
        p -= num;

        k = data[num];

        for (int i = 1; i <= num; i++) {

            NODE* listnode = (NODE*)malloc(sizeof(NODE));
            listnode->m_nKey = data[i];
            listnode->M_pNext = NULL;

            head->M_pNext = listnode;
            head = listnode;

            if (i == k) {
                prenode = headp;
            } else if (i > k) {
                prenode = prenode->M_pNext;
            }

        }
        if (prenode == NULL) {
            printf("NULL\n");
        } else {
            printf("%d\n", prenode->m_nKey);
        }
    }
    return 0;
}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务