posts - 63, comments - 37, trackbacks - 0, articles - 0
  IT博客 :: 首页 :: 新随笔 :: 联系 ::  :: 管理
用单链表实现查找(获取)倒数第m个元素,当m=0时就是指单链表最后一个元素。
最佳算法之一:
 用两个指针,一个指向当前遍历的元素,CurPos,另外一个指向CurPos前第m个元素,
然后两个指针同时一直向单链表后序元素遍历,直到CurPos指向最后一个元素为止。

element *FindMToLast(element *head, int m){

    int i;

    element *CurPos, *MToCurPos;

    CurPos = head;

   

    for(i=0; i<m; i++){

        if(CurPos->next){

            CurPos = CurPos->next;

        }else{

            /* 不到M个元素*/

            return NULL;

        }

    }

   

    /*Start mbehind at beginning and advanced pointers

    *together until current hits last element

    */

   

    MToCurPos = head;

    while(current->next){

        current = current->next;

        MToCurPos = MToCurPos->next;

    }

    /*

    *MToCurPos now points to the element we were

    *searching for, so return it

    */

    return MToCurPos;

 

}



只有注册用户登录后才能发表评论。