LinkList Reverse_1(LinkList L) { //傳入鏈表的頭結點
LNode *p, *r; //p為工作指針,r為p的后繼,以防斷鏈
p = L->next; //從第一個元素節點開始
L->next = NULL; //先將L的next域置為NULL
while(p! = NULL) {
r=p->next; // 暫存p的后繼
/* 后兩句語句就是頭插法建立單鏈表的操作*/
p->next = L->next;
L->next = p;
p = r; //更新指針p,遍歷整個單鏈表
}
return L;
}
解法2
LinkList Reverse_2(LinkList L){ //依次遍歷線性表,並將結點指針反轉 LNode *pre, *p=L->next, *r=p->next; p->next = NULL; //處理第一個結點 鏈表反轉后,第一個結點變為最后一個結點,其next域為NULL while(r!= NULL){ /* 后三句依次更新指針,遍歷單鏈表*/ pre = p; p = r; r = r->next; p->next = pre; //反轉指針 } L->next = p; //處理最后一個結點,鏈表反轉后,最后一個結點變為第一個結點,L->next要指向其 return L; }
