头插法翻转链表

头插法翻转链表

#include <stdio.h>
#include <stdlib.h>

struct Node;
typedef struct Node *PtrNode;
struct Node
{
    int value;
    PtrNode Next;
};

// 头插法翻转单向链表,把每一个节点插在头结点之后
PtrNode InvertList( PtrNode Head )
{
    
    if( Head->Next == NULL )
        return Head;
    
    PtrNode Cur,Tmp;
    Cur = Head->Next;
    Head->Next = NULL; //保证第一个节点不会自己指向自己
    
    while( Cur!= NULL )
    {
        Tmp = Cur->Next;
        Cur->Next = Head->Next;
        Head->Next = Cur;
        Cur = Tmp;
    }
    
    
    return Head;
}

posted @ 2016-09-29 11:49  EvansYang  阅读(1395)  评论(0编辑  收藏  举报