翻转一个单列表
2019獨角獸企業重金招聘Python工程師標準>>>
#include<stdio.h>
#include<stdlib.h>
/**
翻轉一個單鏈表
*/
typedef struct Node{
? ? ? ? int value;?
? ? ? ? struct Node * next;
}Node;
Node * reverse(Node *head){
? ? ? ? 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);
}
轉載于:https://my.oschina.net/u/1388024/blog/315632
總結