首页 > 代码库 > 寻找倒数第K个结点

寻找倒数第K个结点

#include<stdio.h>#include<iostream>using namespace std;/*** 找到链表中的倒数第k个节点*///定义结构体typedef struct Node{    int val;    Node* next;} Node;//创建链表Node* createNode(){    int in;    Node* n;    cin >> in;    if(in == 1000){        n = NULL;    }else{        n = new Node();        n->val = in;        n->next = createNode();    }    return n;}//寻找倒数第k个节点Node* findLastKth(Node* head,int k){    if(head == NULL || k<0)        return NULL;    Node* pBefore = head;    Node* pAfter = head;    int count = 0;    while(count < k-1){        count++;        if(pAfter->next == NULL){            return NULL;        }        pAfter = pAfter->next;    }    while(pAfter->next != NULL){        pBefore = pBefore->next;        pAfter = pAfter->next;    }    return pBefore;}int main(){    Node* n1 = createNode();    cout << "++++++++++++++链表为+++++++++++++++++"<< endl;    Node* cur = n1;    while(cur!=NULL){        cout<<cur->val<<endl;        cur = cur->next;    }    int k = 3;    Node* LsThK = findLastKth(n1,k);    cout << "++++++++++++++倒数第k个节点为+++++++++++++++++"<< endl;    cout << LsThK->val <<endl;    return 0;}

 

寻找倒数第K个结点