public class javaTest1 {
public static void main(String[] args) {
Node head = new Node(0);
Node node1 = new Node(1);
Node node2 = new Node(2);
Node node3 = new Node(3);
Node node4 = new Node(4);
head.setNext(node1);
node1.setNext(node2);
node2.setNext(node3);
node3.setNext(node4);
//打印反转前的单链表
Node h = head;
while(null!=h){
System.out.println(h.getData()+" ");
h=h.getNext();
}
//调用反转的方法
head = reverse1(head);
System.out.println("\n***************");
while(null!=head){
System.out.println(head.getData()+" ");
head=head.getNext();
}
}
/**
* 遍历,将当前节点的下一个节点缓存后改当前节点指针
* @param head
* @return
*/
public static Node reverse1(Node head){
if(head==null)
return head;
Node pre = head; //上一结点
Node cur = head.getNext(); //当前节点
Node tmp; //临时结点,用于保存当前节点的指针域(即下一个节点)
while(cur!=null){ //当前节点为null,说明为尾节点
tmp = cur.getNext();
cur.setNext(pre); //反转指针域的指向
pre = cur;
cur = tmp;
}
//最后将原链表的头节点的指针域置为null,还回新链表的头结点,即原链表的尾结点
head.setNext(null);
return pre;
}
static class Node{
private int Data; //数据域
private Node Next; //指针域
public Node(int data) {
super();
Data = data;
}
public int getData() {
return Data;
}
public void setData(int data) {
Data = data;
}
public Node getNext() {
return Next;
}
public void setNext(Node next) {
Next = next;
}
}
}
单链表的反转
最新推荐文章于 2023-01-31 17:20:29 发布