class LInkedList {
public static void main(String[] args) {
首先创建节点
HeroNode hero1=new HeroNode(1);
HeroNode hero2=new HeroNode(2);
HeroNode hero3=new HeroNode(3);
创建链表
singleLinkList.add(hero1);
singleLinkList.add(hero2);
singleLinkList.add(hero3);
进行反转
reverseList(singleLinkList.getHead());
}
定义链表的结点类
static class HerNode{
**
data为data域
next为HerNode的尾部next域,指向下一个节点
**
public int data;
public HerNode next;
**
构造器
**
public HeroNode(int data){
this.data;
}
}
创建链表
static class SingleLinkList{
先初始化一个头节点,头节点不要动,不存放具体的数据
private static HeroNode head=new HeroNode(0);
在列表中添加数据的方法
public void add(HeroNode heroNode){
因为头节点不能动,因此我们需要一个辅助遍历指针temp
HeroNode temp=head;
遍历链表,找到最后
while(true){
if (temp.next == null) {
break;
}
如果没有找到最后,将temp后移
temp=temp.next;
}
当退出while循环时,temp就指向了链表的最后
将最后这个节点的next指向新的节点
temp.next=heroNode;
}
得到链表的头节点
public HeroNode getHead(){
return head;
}
链表反转的方法
public static void reverseList(HeroNode head){
if (head.next==null||head.next.next==null){
return ;
}
定义一个变量cur帮我们遍历原来的链表
HeroNode cur=head.next; 表示第一个元素
HeroNode next=null; 指向当前节点的下一个结点
HeroNode reverseHead=new HeroNode(0);
遍历
while(cur!=null){
next=cur.next; 先暂时保存当前节点的下一个结点,并放在新的链表reverseHead的最前端
cur.next=reverseHead.next; 将cur的下一个结点指向新的链表的最前端
reverseHead.next=cur; 将cur连接到新链表上
cur=next; 让cur后移
}
head.next=reverseHead.next;
}
}