这个题目是一个函数题,只需要写一个函数Reverse就行
但是通过搜索资料,发现单链表逆转可以用四种方法来实现
1、迭代逆转链表
借助三个指针beg,mid,end来遍历该链表,在这个过程中,把指针域的指针都改变方向,最后将给出的头指针L指向最后一个即可
List Reverse(List L ){
if(L == NULL){
return L ;
}
if(L->next == NULL){
return L ;
}
int flag = 0 ;
List beg ,mid ,endd ;
beg = NULL ;
mid = L ;
endd = L->Next ;
do{
mid->Next = beg
if(flag == 1){
break ;
}
beg = mid ;
mid = endd ;
endd = endd->Next ;
if(endd == NULL){
flag = 1 ;
}
}while(1) ;
L = mid ;
return L ;
}
2、递归逆转链表
递归的思想一般来说都有点难懂,但是这个相当于套娃,一层一层翻出来,就相当于从链表的最后端到最前端走了一遍。
List Reverse(List L ){
if(L == NULL){
return L ;
}
if(L->Next == NULL){
return L ;
}
List NL = Reverse(L->Next);
L->Next->Next = L ;
L->Next = NULL ;
return NL ;
}