java 链表反转_LeetCode206 实现单链表的反转
生活随笔
收集整理的這篇文章主要介紹了
java 链表反转_LeetCode206 实现单链表的反转
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
LeetCode206 實(shí)現(xiàn)單鏈表的反轉(zhuǎn)
LeetCode 碼,碼不停題
1.題目介紹
Reverse a singly linked list.
Example:
Input:1->2->3->4->5->NULL
Output:5->4->3->2->1->NULL
2.實(shí)現(xiàn)方式
就地反轉(zhuǎn)法
新建鏈表,頭節(jié)點(diǎn)插入法
遞歸反轉(zhuǎn)法
3.代碼實(shí)現(xiàn)
不啰嗦,直接看代碼實(shí)現(xiàn),本文代碼主要采用java編寫
單鏈表實(shí)現(xiàn)歡迎參考文章https://blog.csdn.net/u014229347/article/details/88966409)
/** * 實(shí)現(xiàn)單鏈表的反轉(zhuǎn)(LeetCode206) * * @author llspace * @since 2019-06-28 */public class SingleLinkedListReverse { public static void main(String[] args) { SingleLinkedList singleLinkedList = new SingleLinkedList<>(); singleLinkedList.addHead(1); for(int i = 2; i < 6; i++){ singleLinkedList.addNode(i, i-1); } singleLinkedList.print(); //測試單鏈表反轉(zhuǎn) //singleLinkedList = reverse(singleLinkedList); //singleLinkedList = reverse1(singleLinkedList); singleLinkedList = reverse2(singleLinkedList); singleLinkedList.print(); } /** * 就地反轉(zhuǎn)法 * * @param input * @return */ public static SingleLinkedList reverse(SingleLinkedList input){ SingleLinkedList.Node head = input.getHead(); SingleLinkedList.Node next = head.next; while(next != null){ input.addHead(next.value); head.next = next.next; next = next.next; } return input; } /** * 新建鏈表,頭節(jié)點(diǎn)插入法 * * @param input * @return */ public static SingleLinkedList reverse1(SingleLinkedList input){ SingleLinkedList output = new SingleLinkedList<>(); SingleLinkedList.Node head = input.getHead(); while(head != null){ output.addHead(head.value); head = head.next; } return output; } /** * 遞歸反轉(zhuǎn)法 * * @param input * @return */ public static SingleLinkedList reverse2(SingleLinkedList input){ input.setHead(reverseNode(input.getHead())); return input; } public static SingleLinkedList.Node reverseNode(SingleLinkedList.Node head){ if(head == null || head.next == null) { return head; } SingleLinkedList.Node node = reverseNode(head.next); head.next.next = head; head.next = null; return node; }}好了今天就碼到這了,歡迎感興趣的朋友們一起交流!
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的java 链表反转_LeetCode206 实现单链表的反转的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pdf拼版插件_pdf文件中的文字批量转
- 下一篇: python爬取内容乱码_【提问】PYT