寻找倒数第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; }