單鏈表的逆置

                1,題目 

定義一個函數,輸入一個鏈表的頭節點,逆置該鏈表並輸出逆置鏈表的頭節點,鏈表的定義如下:

typedef int ElemType;
typedef struct LNode
{
    ElemType data;
    LNode *next;
}LNode;
                2,鏈表逆置代碼實現 
LNode *ReverseList(LNode *phead)  
{
    if(phead == NULL) return NULL;
    LNode *pReverseList = NULL;  //逆置後鏈表的頭節點
    LNode *pNode = phead;   //當前節點
    LNode *pPrev = NULL;    //前驅節點
    while(phead != NULL)
    {
        LNode *pNext = pNode->next; //後繼節點
        if(pnext == NULL)
            pReverseList = pNode;//最後一個節點
        pNode->next = pPrev;
        pPrev = pNode;
        pNode = pNext;
    }
    return pReverseList;
}
                3,主要思路

鏈表逆置是定義三個指針,分別指向當前節點,以及它的前驅節點和後繼節點,判斷當前節點不等於NULL,讓當前節點的next指向它的前驅,然後把當前節點賦給前驅節點,把後繼節點賦給當前節點,一直遍歷,直到當前節點爲NULL,鏈表也就實現了逆置。

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