【数据结构与算法 3,宅家36天咸鱼翻身入职腾讯

		}

		//后移,遍历当前链表

		temp = temp.next;

	}

	//判断flag的值

	if(flag) {//不能添加,说明编号存在

		System.out.printf("插入英雄的编号%d已经存在,插入失败",heroNode.no);

	}else {

		//插入到链表中,temp的后面

		heroNode.next = temp.next;

		temp.next = heroNode;

	}

}



//修改节点的信息,根据编号no来修改,no不能修改

//根据新节点的编号来修改

public void update(HeroNode newHeroNode) {

	//判断是否为空

	if(head.next == null) {

		System.out.println("链表为空");

		return;

	}

	//找到需要修改的节点,根据no编号

	//定义一个辅助变量

	HeroNode temp = head.next;

	boolean flag = false;//表示是否找到该节点

	while(true) {

		if(temp == null) {

			//表示链表已经遍历结束

			break;

		}

		if(temp.no == newHeroNode.no) {

			flag = true;

			break;

		}

		temp = temp.next;

	}

	//根据flag判断是否找到要修改的节点

	if(flag) {

		temp.name = newHeroNode.name;

		temp.nickname = newHeroNode.nickname;

	}else {

		System.out.printf("没找到编号%d的节点,不能修改\n",temp);

	}

}



//删除节点

//思路

//1、head节点不能动,因此我们需要一个temp辅助节点,找到待删除节点的前一个节点

//2、说明我们在比较时,是让temp.next.no和需要删除的节点的no进行比较

public void del(int no) {

	HeroNode temp = head;

	boolean flag = false;//表示是否找到待删除节点的前一个节点

	while(true) {

		if(temp.next == null) {

			System.out.println("已经遍历到最后了");

			break;

		}

		if(temp.next.no == no) {

			//找到了待删除节点的前一个节点temp

			flag = true;

			break;

		}

		temp = temp.next;//temp后移,才能实现遍历

	}

	if(flag){

		temp.next = temp.next.next;

	}else {

		System.out.printf("要删除的节点%d不存在无法删除",no);

	}

}



//显示链表,通过遍历

public void list() {

	//先判断链表是否为空

	if(head.next == null) {

		System.out.println("链表为空");

		return;

	}

	//因为头节点不能动,因此需要一个辅助变量来遍历

	HeroNode temp  = head.next;

	while(true) {

		//判断是否到链表最后

		if(temp == null) {

			break;

		}

		//输出节点的信息

		System.out.println(temp);

		//将next后移,一定小心,不然是死循环

		temp = temp.next;

	}

}

}




###  测试类



package com.atguigu.linkedlist;

public class SingleLinkedListDemo {

public static void main(String[] args) {

	//进行一个测试

	//先创建节点

	HeroNode hero1 = new HeroNode(1,"宋江","及时雨");

	HeroNode hero2 = new HeroNode(2,"卢俊义","玉麒麟");

	HeroNode hero3 = new HeroNode(3,"吴用","智多星");

	HeroNode hero4 = new HeroNode(4,"公孙胜","入云龙 ");

	

	//创建一个链表

	SingleLinkedList singleLinkedList = new SingleLinkedList();

	//加入

// singleLinkedList.add(hero1);

// singleLinkedList.add(hero4);

// singleLinkedList.add(hero3);

// singleLinkedList.add(hero2);

	//按照编号加入

	singleLinkedList.addByOrder(hero1);

	singleLinkedList.addByOrder(hero4);

	singleLinkedList.addByOrder(hero3);

	singleLinkedList.addByOrder(hero2);

	singleLinkedList.list();

	//测试修改节点的代码

	HeroNode newHeroNode = new HeroNode(2,"小卢","*玉麒麟*");

	singleLinkedList.update(newHeroNode);

	System.out.println("修改之后的链表:");

	singleLinkedList.list();

	

	//删除一个节点

	System.out.println("删除一个节点:");

	singleLinkedList.del(1);

	singleLinkedList.del(2);

	singleLinkedList.del(3);

	singleLinkedList.del(4);

	singleLinkedList.list();

}

}




**六、控制台输出**

-----------



![](https://img-blog.csdnimg.cn/img_convert/c29fa91d705ab8d67a1b7d730e9b3b7d.png)

最近我根据上述的技术体系图搜集了几十套腾讯、头条、阿里、美团等公司21年的面试题,把技术点整理成了视频(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分

[戳这里免费领取下面所有资料](https://gitee.com/vip204888/java-p7)

![](https://img-blog.csdnimg.cn/img_convert/bc178a2eb39b9a6a472a6f7edaa5d1ef.png)


六、控制台输出


[外链图片转存中…(img-KB1IUPuI-1628390584875)]

最近我根据上述的技术体系图搜集了几十套腾讯、头条、阿里、美团等公司21年的面试题,把技术点整理成了视频(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分

戳这里免费领取下面所有资料

[外链图片转存中…(img-Fn6rRYls-1628390584877)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值