演算法設計與分析01-連結串列的逆置
阿新 • • 發佈:2018-11-09
一.最常用的方法:
LNode* ReverseList(LNode* head)
{
if (head == NULL)
return NULL;
if (head->next == NULL)
return head;
LNode* pre = NULL;
LNode* Cur = head;
LNode* Nex = NULL;
while (Cur!=NULL)
{
Nex = Cur->next;
Cur->next = pre;
pre = Cur;
Cur = Nex;
}
return pre;
}
二.利用遞迴方法:
LNode* ReverList1(LNode* head)
{
if (head == NULL)
return NULL;
if (head->next == NULL)
{
return head;
}
LNode* Node = head; //保留上一個結點
LNode* Nex = head->next;
LNode* HeadNode = ReverList1(Nex);
Nex->next = Node; //逆置
Node->next = NULL; //這句必須有,否則會產生迴圈連結串列
return HeadNode;//返回逆置連結串列的尾結點
}