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,鏈表也就實現了逆置。