#include<stdio.h>node
#include<stdlib.h>io
/**鏈表
翻轉一個單鏈表next
*/di
typedef struct Node{while
int value; return
struct Node * next;void
}Node;printf
Node * reverse(Node *head){struct
if(head == NULL || head -> next == NULL ){ return head;}
Node *f1 = NULL, *f2 = NULL, *cur = NULL;
cur = head;
f1 = cur->next;
f2 = cur->next->next;
if(f2 == NULL){
f1->next = cur;
cur->next = NULL;
return f1;
}
while(f2 != NULL){
f1->next = cur;
cur = f1;
f1 = f2;
f2 = f2->next;
}
head->next=NULL;
f1->next = cur;
return f1;
}
void printNodes(Node * node){
int i = 0;
printf("\n---------------------------\n");
while(node != NULL && i < 10){
printf("%d\n",node->value);
i++;
node = node->next;
}
}
int main(){
Node *n1 = malloc(sizeof(struct Node ));
Node *n2 = malloc(sizeof(struct Node ));
Node *n3 = malloc(sizeof(struct Node ));
Node *result;
int i =0;
n1->value =1;
n2->value =2;
n3->value =3;
n1->next = n2;
n2->next = n3;
n3->next = NULL;
printNodes(n1);
result = reverse(n1);
printNodes(result);
}