查找单链表的倒数第K个元素

考虑单链表少于K个元素的情况。

 

  1. struct node{ 
  2.     int key; 
  3.     node* next; 
  4. }; 
  5. typedef node* List;
  6. int findLastKthElement(List list, int k) 
  7.     //遍历整个链表, 
  8.     //声明一个临时指针指向头节点 
  9.     //当遍历过元素个数小于K的时候,继续遍历 
  10.     //当遍历过的元素个数等于k的时候,临时指针指向下一个元素,然后继续遍历 
  11.     //当遍历到链表尾部的时候,则临时指针指向的节点就为倒数第k个元素。 
  12.     if (list == NULL || k <= 0) 
  13.     { 
  14.         return -1;   //查找失败。 
  15.     }
  16.     List p = list; 
  17.     List tempList = list;
  18.     int num = 0; 
  19.     while(p) 
  20.     { 
  21.         if (num < k) 
  22.         { 
  23.             num++; 
  24.         } 
  25.         else if (num == k) 
  26.         { 
  27.             tempList = tempList->next; 
  28.         } 
  29.         p = p->next; 
  30.     } 
  31.       
  32.     if (num < k) 
  33.     { 
  34.         return -1; //查找倒数第k个元素失败 
  35.     } 
  36.     return  tempList->key; 
posted @ 2015-09-26 22:49  Uncle_Nucky  阅读(204)  评论(0)    收藏  举报