反转链表

主要考察指针的操作,也没什么好说的,直接上代码:

ListNode * ReverseList(ListNode* pHead)
{
    if( pHead == NULL)
        return NULL;
    ListNode* pReversedHead = NULL;
    ListNode* pNode = pHead;
    ListNode* pPrev = NULL;

    while( pNode !=NULL ) //注意这里是判断的停止的条件
    {
        ListNode* pNext = pNode->pNext; //存储当前节点的后一个节点

        if( pNext == NULL)
            pReversedHead = pNode;

        //一下赋值顺序不能搞错
        pNode->pNext = pPrev; //改变当前指针所指向的下一个指针,指向前一个节点
        pPrev = pNode;//指向前一个节点的指针向后移动
        pNode = pNext;//把当前指针指向原来的后一个节点,这就是为什么要创建一个pNext的原因
    }
    return pReversedHead;
}

 

posted @ 2013-03-03 23:27  没离开过  阅读(83)  评论(0)    收藏  举报