剑指 Offer 24. 反转链表(C语言)
生活随笔
收集整理的這篇文章主要介紹了
剑指 Offer 24. 反转链表(C语言)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
**定義一個函數,輸入一個鏈表的頭節點,反轉該鏈表并輸出反轉后鏈表的頭節點。
示例:
輸入: 1->2->3->4->5->NULL
輸出: 5->4->3->2->1->NULL
限制:
0 <= 節點個數 <= 5000**
這道題可以通過兩個一前一后的指針來實現;先定義一個指針p和head一樣指向第一個節點,然后再定義一個指向NULL的指針q位于p的后面,也就是head的前面,讓p指向的節點的指針域反過來指向q,p不斷向前移動直到走到鏈表末尾NULL結束,此時的q就是新的頭節點;
代碼如下:
代碼小改一下:
/*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/struct ListNode* reverseList(struct ListNode* head) {struct ListNode* p=head;struct ListNode* q=NULL;while(p!=NULL){struct ListNode* t=p->next;p->next=q;q=p;p=t;}return q; }意思都是一樣的,看個人理解吧。
總結
以上是生活随笔為你收集整理的剑指 Offer 24. 反转链表(C语言)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 237. 删除链表中的节点(C语言)
- 下一篇: 876. 链表的中间结点(C语言)