JAVA数据结构与算法——单链表(2)

基于上一节单链表(1)中的思路改进,按照编号的顺序进行添加节点。

上一节的链接:https://blog.csdn.net/qq_42120059/article/details/107963648

  • 思路

  1. 首先找到新添加节点的位置,通过辅助变量,然后遍历。(原因:头结点不可随意改动)
  2. 新的节点.next=temp.next
  3. 将temp.next = 新的节点
图1-1 思路图解
  • 代码实现

 

		// 按照方式二加入:
		singleLinkedList.add2(hero1);
		singleLinkedList.add2(hero4);
		singleLinkedList.add2(hero2);
		singleLinkedList.add2(hero3);
		singleLinkedList.add2(hero3);
    // 第二种添加英雄的方式,根据排名插入指定位置(如果有这个排名,则添加失败,并且给出提示)
	public void add2(HeroNode heroNode) { // 寻找的temp是位于添加位置的前一个节点
		HeroNode temp = head;
		boolean flag = false;// 标识编号是否存在,默认为false
		while (true) {
			if (temp.next == null) {
				break;
			}
			if (temp.next.no > heroNode.no) { // 位置找到了,在temp后插入
				break;
			} else if (temp.next.no == heroNode.no) {
				// 编号存在
				flag = true;
				break;
			}
			temp = temp.next; // 后移,遍历
		}
		// 判断falg的值
		if (flag) {
			System.out.printf("编号%d存再,不能加入\n", heroNode.no);
		} else {
			// 插入链表中,temp后
			heroNode.next = temp.next;
			temp.next = heroNode;
		}

	}

  • 后台输出

编号3存再,不能加入
HeroNode [no=1, name=宋江, nickname=及时雨]
HeroNode [no=2, name=卢俊义, nickname=玉麒麟]
HeroNode [no=3, name=吴用, nickname=智多星]
HeroNode [no=4, name=林冲, nickname=豹子头]

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值