目录
链表节点的数据结构
- 链表的数据结构主要是由两部分组成的,显而易见,一个就是当前的节点存储的数据,一个就是指向下一个节点。
/**
* 链表的节点
*
* @author yingmu
*
*/
public class Node {
private char Data;
private Node Next;
public Node(char Data) {
this.Data = Data;
}
public char getData() {
return Data;
}
public void setData(char Data) {
this.Data = Data;
}
public Node getNext() {
return Next;
}
public void setNext(Node Next) {
this.Next = Next;
}
}
方法一:遍历
/**
* 遍历方法
*
* @param current
* @return
*
*/
public static Node reverseList2(Node head) {
if (head == null)
return head;
Node pre = head;
Node cur = head.getNext();
Node tmp;
while (cur != null) {
tmp = cur.getNext();
cur.setNext(pre);
pre = cur;
cur = tmp;
}
head.setNext(null);
return pre;
}
方法二:递归
/**
* 递归,在反转当前节点之前先反转后续节点
*
* @param head
* @return
*
*/
public static Node reverseList1(Node head) {
if (head == null || head.getNext() == null) {
return head;
}
Node reHead = reverseList1(head.getNext());
head.getNext().setNext(head);
head.setNext(null);
return reHead;
}