将带头节点的单向链表反转

	//实现一个链表的反转,头节点不动
	public void reverse(stuNode head) {
		stuNode reverseHead = new stuNode(0,"","");  //反转头节点
		stuNode cur = head.next;  //表示当前节点
		stuNode curNext;  //当前节点的下一节点
		
		//判断是否空列表
		if(head.next == null) {
			return;
		}
		while(cur != null) {
			curNext = cur.next;
			cur.next = reverseHead.next;
			reverseHead.next = cur;
			cur = curNext;			
		}	
		//拼接
		head.next = reverseHead.next;
	}

测试

public class StuLinkListDemo {

	public static void main(String[] args) {
		stuNode stu1 = new stuNode(1,"张三","在线");
		stuNode stu2 = new stuNode(2,"李四","离线");
		stuNode stu3 = new stuNode(3,"王五","在线");
		stuNode stu4 = new stuNode(4,"赵六","在线");
		
		StuLinkList stulist = new StuLinkList();
		stulist.addByOrder(stu1);
		stulist.addByOrder(stu3);
		stulist.addByOrder(stu4);
		stulist.addByOrder(stu2);
		
		stulist.list();
		
		//测试反转
		System.out.println("反转后");
		stulist.reverse(stulist.getHead());;
		stulist.list();
	}
}

结果如下
在这里插入图片描述
实现过程中出现的问题
1.return和break的用法:return用来返回,也可以用来结束方法。而break是用来跳出循环,当要跳出外部循环是,可以使用带标签的break
2.关于new对象和赋值null的区别

stuNode reverseHead = new stuNode(0,"","");

new对象会将reverseHead 指向stuNode 在内存创建的地址
如果是stuNode reverseHead = null;则不会占用内存空间

什么时候用new对象,什么时候用null
加入要进行取值操作,则必须要new
若只是当个辅助变量,用来遍历之类的用null

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值