C链表反转(时间复杂度O(n))
生活随笔
收集整理的這篇文章主要介紹了
C链表反转(时间复杂度O(n))
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
面試的時候經常會出現的問題,現在都做一遍,回憶一下,練練手.
這個題目需要注意兩點:
1.head->next 要先設置為NULL ,否則反轉后,它還是指向之前的next節點
2.需要有一個tmp指針,臨時保存p->next的地址,這個在改變一個節點的next地址時,經常會用到
示意圖
代碼實現
?
#include<stdio.h>struct ListNode{int data;ListNode *next; } ListNode* reverse(ListNode* head){ListNode *p,*tmp ;p = head->next;head->next=NULL;while(p){tmp = p->next; //圖1 保存p->nextp->next = head; //圖1 反向指向head head = p ; //圖2 head 指向p p = tmp; //圖2 p指向p->next }return head; }?
?
總結
以上是生活随笔為你收集整理的C链表反转(时间复杂度O(n))的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到流血意味着什么
- 下一篇: jboss-AS目录结构了解(资料摘取)