首页 > 试题广场 >

编程实现对一个进行链表逆序操作。

[问答题]
编程实现对一个进行链表逆序操作。
node *reverse(node *head) { node *p1, *p2, *p3; if (head == NULL || head->next) return head; p1 = head, p2 = p1->next; while (p2) { p3 = p2->next; p2->next = p1; p1 = p2; p2 = p3; } head->next = NULL; head = p1; return head; }//这个很不错,画个图就理解了
发表于 2021-10-02 17:27:44 回复(0)
struct ListNode {
    int m_nValue;
    ListNode* m_pNext;
};

ListNode* ReverseList(ListNode* pHead) {
    ListNode* pNode = pHead;
    ListNode* pPrev = NULL;
    ListNode* pNext = NULL;
    while (pNode != NULL) {
        pNext = pNode->m_pNext;
        pNode->m_pNext = pPrev;
        pPrev = pNode;
        pNode = pNext;
    }
    return pPrev;
}
编辑于 2015-03-25 20:06:20 回复(0)
node *reverse(node *head)
{
    node *p1, *p2, *p3;
    if (head == NULL || head->next)
        return head;
    p1 = head, p2 = p1->next;
    while (p2)
    {
        p3 = p2->next;
        p2->next = p1;
        p1 = p2;
        p2 = p3;
    }
    head->next = NULL;
    head = p1;
    return head;
}

发表于 2014-11-13 23:58:57 回复(0)