当前位置:网站首页>C language to quickly solve the reverse linked list

C language to quickly solve the reverse linked list

2022-07-04 23:15:00 I'm not Xiao Haiwa~~~~

Reverse a linked list
Title Description :
Given the head node of a single linked list pHead( The header node has a value , For example, in the figure below , its val yes 1), The length is n, After reversing the linked list , Return the header of the new linked list .

Data range : 0≤n≤1000
requirement : Spatial complexity O(1) , Time complexity O(n)O(n)
For example, when entering a linked list {1,2,3} when , After reversal , The original linked list becomes {3,2,1}, So the corresponding output is {3,2,1}.
The above conversion process is shown in the figure below :

 Insert picture description here
This paper introduces two methods :
(1) Reverse in place
(2) Double linked list method
( I think the two methods are similar …)

/*struct ListNode { int val; struct ListNode *next; }; */
// use c Language implementation 
struct ListNode* ReverseList(struct ListNode* pHead ) {
    
  struct ListNode *pre=NULL;//pre The pointer points to the last node of the inverted linked list , There was no reversal at first , So the point to null
  struct ListNode *cur=pHead;//cur The pointer points to the first node of the linked list to be reversed , Wait for the first node to reverse , So the point to head
  struct ListNode *nex=NULL;// Used to save broken chain nodes , That is, the pointer points to the second node of the linked list to be reversed 
    while(cur){
    
        nex=cur->next;
        cur->next=pre;// Realize the chain breaking operation 
        pre=cur;// Inverted node 
        cur=nex;// Point to the previously broken node 
    }
    return pre;
    
}

// Double linked list implementation 
 struct ListNode* ReverseList(struct ListNode* pHead ) {
    
     struct ListNode *newHead=NULL;
     while(pHead!=NULL){
    
        struct ListNode *temp=pHead->next; // Save the broken chain node 
         pHead->next=newHead;// Hang the new linked list after the visited original linked list node 
         newHead=pHead;
         pHead=temp;
     }
     return newHead;
 }

notes : You can also use stack to realize this problem , The first in and last out output just realizes the inversion

original text :https://blog.csdn.net/qq_46027119/article/details/124182305

原网站

版权声明
本文为[I'm not Xiao Haiwa~~~~]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/185/202207042234132123.html