翻轉一個單列表

#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);




}

相關文章
相關標籤/搜索