生活随笔
收集整理的這篇文章主要介紹了
数据结构与算法之反转单向链表和双向链表
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
數(shù)據(jù)結構與算法之反轉(zhuǎn)單向鏈表和雙向鏈表
目錄
反轉(zhuǎn)單向鏈表和雙向鏈表
1. 反轉(zhuǎn)單向鏈表和雙向鏈表
題目描述
代碼實現(xiàn)
public class Code_ReverseList {public static class Node {public int value
;public Node next
;public Node(int data
) {this.value
= data
;}}public static Node
reverseList(Node head
) {Node pre
= null
;Node next
= null
;while (head
!= null
) {next
= head
.next
;head
.next
= pre
;pre
= head
;head
= next
;}return pre
;}public static class DoubleNode {public int value
;public DoubleNode last
;public DoubleNode next
;public DoubleNode(int data
) {this.value
= data
;}}public static DoubleNode
reverseList(DoubleNode head
) {DoubleNode pre
= null
;DoubleNode next
= null
;while (head
!= null
) {next
= head
.next
;head
.next
= pre
;head
.last
= next
;pre
= head
;head
= next
;}return pre
;}public static void printLinkedList(Node head
) {System
.out
.print("Linked List: ");while (head
!= null
) {System
.out
.print(head
.value
+ " ");head
= head
.next
;}System
.out
.println();}public static void printDoubleLinkedList(DoubleNode head
) {System
.out
.print("Double Linked List: ");DoubleNode end
= null
;while (head
!= null
) {System
.out
.print(head
.value
+ " ");end
= head
;head
= head
.next
;}System
.out
.print("| ");while (end
!= null
) {System
.out
.print(end
.value
+ " ");end
= end
.last
;}System
.out
.println();}public static void main(String
[] args
) {Node head1
= new Node(1);head1
.next
= new Node(2);head1
.next
.next
= new Node(3);printLinkedList(head1
);head1
= reverseList(head1
);printLinkedList(head1
);DoubleNode head2
= new DoubleNode(1);head2
.next
= new DoubleNode(2);head2
.next
.last
= head2
;head2
.next
.next
= new DoubleNode(3);head2
.next
.next
.last
= head2
.next
;head2
.next
.next
.next
= new DoubleNode(4);head2
.next
.next
.next
.last
= head2
.next
.next
;printDoubleLinkedList(head2
);printDoubleLinkedList(reverseList(head2
));}
}
編譯結果
總結
以上是生活随笔為你收集整理的数据结构与算法之反转单向链表和双向链表的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。