翻转一个单列表

#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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值