#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; }