[LeetCode-206] Reverse Linked List(链表反转)

来源:互联网 发布:java 发送邮件带图片 编辑:程序博客网 时间:2024/04/29 13:47

Reverse a singly linked list.

链表反转详细分析


代码如下:

/*无头结点*/struct ListNode* reverseList(struct ListNode* head) {    if((head == NULL) || (head->next==NULL))  //链表为空,或只有一个结点(无需反转),直接返回        return head;    struct ListNode *pre = NULL;//前一个    struct ListNode *cur = NULL;//当前    struct ListNode *ne = NULL;//后一个    pre = head;         //将前面几个节点的地址依次保存在新定义的结构体指针    cur = head ->next;    while(cur)    {        ne = cur->next;  //如果当前节点不为空,则将其指针域赋给ne指针        cur->next = pre; //直接将两个指针的指向反转        pre = cur;       //将当前节点赋给pre,将三个指针在链表中的位子都往后移一位        cur = ne;         }    head->next = NULL;//将原来的第一个节点的指针域赋为空,作为尾节点    head = pre;      //将原来的尾节点变成新链表的第一个节点    return head;}
0 0
原创粉丝点击