版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/flower_CSDN/article/details/81879519
package wjh.singlelist.revise;
public class Node {
int data;
Node next;
/**
* 链表反转(递归)
* @param node 头结点
* @param prev 前一个节点,传入null即可
*/
public static void revise(Node node,Node prev) {
if(node!=null) {
Node next=node.next;
node.next=prev;
prev=node;
revise(next,prev);
}
return ;
}
/**
* 链表反转(非递归)
* @param head
* @return
*/
public Node revise(Node head) {
Node next,phead;
Node node=head;
Node prev=null;
while(node!=null) {
if(node.next==null) {
head=node.next;
}
else {
next=node.next;
}
node.next=prev;
prev=node.next;
}
return head;
}
/**
* 合并两个有序链表,合并之后的链表仍然有序
* @param node1 链表一
* @param node2 链表二
* @return 合并后的链表
*/
public Node merageList(Node node1,Node node2) {
Node node=null;//存放要连接的那个小的节点
if(node1==null) {//若链表1为空直接返回链表2
return node2;
}
if(node2==null) {
return node1;
}
if(node1.data<node2.data) {
node=node1;
merageList(node1.next, node2);
}
else {
node=node2;
merageList(node1, node2.next);
}
return node;
}
/**
* 遍历链表元素
* @param head
*/
public static void printList(Node head) {
Node node=head;
while(node!=null) {
System.out.print(node.data+" ");
if(node.next!=null) {
node=node.next;
}
else {
node=null;
}
}
}
/**
* 得到链表的头结点
* @param node
* @return
*/
public Node getHead(Node node) {
while(node!=null) {
if(node.next!=null) {
node=node.next;
}
else {
return node;
}
}
return null;
}
public static void main(String[] args) {
Node head=new Node();
head.data=1;
Node node2=new Node();
node2.data=2;
Node node3=new Node();
node3.data=3;
Node node4=new Node();
node4.data=4;
Node node5=new Node();
node5.data=5;
Node node6=new Node();
node6.data=6;
head.next=node2;
node2.next=node3;
node3.next=node4;
node4.next=node5;
node5.next=node6;
node6.next=null;
revise(head,null);
printList(node6);
}
}