定義一個函式,輸入一個連結串列的頭節點,反轉該連結串列並輸出反轉後連結串列的頭節點

code泉 發表於 2020-11-21

定義一個函式,輸入一個連結串列的頭節點,反轉該連結串列並輸出反轉後連結串列的頭節點

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */


struct ListNode* reverseList(struct ListNode* head){
    if(head==NULL||head->next==NULL) return head;
   struct ListNode *p,*q,*pre;
    p=head;
    q=head->next;
    if(q->next==NULL) p->next=NULL;
    while(q->next!=NULL){
        pre=q->next;
        q->next=p;
        if(p==head) p->next=NULL;
        p=q;
        q=pre;
    }
    
    q->next=p;
    
return q;


}