鏈表反轉(zhuǎn)
節(jié)點數(shù)據(jù)結(jié)構(gòu)如下:
class Node {
private Stringname;
private Nodenext;
public Node(String name) {
this.name = name;
}
鏈表反轉(zhuǎn)的兩種方式:遞歸和非遞歸
遞歸方式如下:
public NoderecursiveReverse(Node head) {
if (head ==null || head.next ==null) {
return head;
}
Node node = recursiveReverse(head.next);
head.next.next = head;
head.next =null;
return node;
}
非遞歸方式如下:
public Nodereverse(Node head) {
if (head ==null) {
return null;
}
Node pre = head;
Node node = pre.next;
pre.next =null;
while (node !=null) {
Node nodeNext = node.next;
node.next = pre;
pre = node;
node = nodeNext;
}
return pre;
}