鏈表反轉

鏈表反轉: 
數據結構如下: 

typedef struct _node  



    int data; 

    struct _node *next; 

} node; 

完成函數 node *reverse(node *head),head爲不帶頭節點的鏈表的首部。 

node *reverse(node *head) 



    node *tmp     = null;                // 緩衝變量 

    node *newhead = null;                // 反轉後的新頭節點 

     

    if ( head==null ) return head;       // 空鏈表的情況 

    if ( head->next==null ) return head; // 鏈表只有一個節點的情況 

  

    while ( head )                       // 判斷有沒有移動到最後 

    { 

        tmp=head->next;                  // 臨時記錄下一個節點 

        head->next = newhead;            // 把原來鏈表中的節點放到新的鏈表的首部 

        newhead = head; 

        head = tmp; 

    } // end of while 

    return newhead; 

} // end of reverse 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章