完整代码实例-Java实现单链表的尾插入,定点插入,查找,修改,删除,遍历输出
package DataStrcture.ArrayDemo.singlelistdemo;
public class SingleList_copy_copy {
///
/*
1. 结点内部类
*/
public static class Node{
public Node next;
public String name;
public int age;
//构造器初始化结点类
public Node( int _age,String _name){
this.name = _name;
this.age = _age;
}
///toStirng()
public String toString(){
return "Name: "+name+"-"+age+"岁";
}
//get 和 set 方法 用于数据域的访问和改变
public void setName(String name){
this.name = name;
}
}
///路标: 头结点
Node head = new Node(0,"");
2. 结点的插入
/*
尾插法, temp.next = node;
*/
public void addNode(Node node){
///临时结点,遍历链表
Node temp = head;
//循环遍历链表
while(true){
if(temp.next == null)
break;
temp = temp.next;
}
temp.next = node;
}
///3. 链表的修改
//把吃粑粑改成吃馍馍
public void edit(String name){
Node temp = head;
while(true){
if(temp.next.name.equals("吃粑粑"))
break;
temp = temp.next;
}
temp = temp.next;
temp.setName(name);
}
///3. 结点的遍历输出
public void list(){
Node temp = head;
while(true){
if(temp.next == null)
break;
temp = temp.next;
System.out.println(temp);
}
}
4. 结点的删除
/*
temp.next =temp.next.next;
*/
public void deleteNode(Node node) {
///临时结点
Node temp = head;
//查找结点位置
while (true) {
if (temp.next == null) {
System.out.println("查找失败");
break;
}
temp = temp.next;
if (temp.next == node) {
temp.next = temp.next.next;
break;
}
}
}
5. 结点的定点插入
/*
node.next = temp.next;
temp.next = node;
*/
public void insertNode(Node node,String name){
///查找插入位置
/ 比如我们插入到name="吃粑粑"的后面
///临时变量
Node temp= head;
boolean flag = false;//标记是否找到
if (temp.next == null){
System.out.println("链表为空,无法找到插入位置");
}
while(true){
if(temp.next.name.equals(name)){
flag=true;
break;
}
temp = temp.next;
}
if(flag){
temp = temp.next; //找到目标name
node.next = temp.next;
temp.next = node;
}
}
///测试
public static void main(String[] args) {
///新建结点类,初始化数据域
Node node_1 = new Node(38,"王老吉");
Node node_2 = new Node(17,"花姑娘");
Node node_3 = new Node(17,"周翠花");
Node node_4 = new Node(28,"小猪");
Node node_5 = new Node(33,"小狗");
Node node_7 = new Node(33,"买奥克斯空调");
///待插入结点
Node node_6 = new Node(33,"吃粑粑");
///新建链表
SingleList_copy_copy sl = new SingleList_copy_copy();
///链表加入结点
sl.addNode(node_1);
sl.addNode(node_2);
sl.addNode(node_3);
sl.addNode(node_4);
sl.addNode(node_5);
sl.addNode(node_7);
System.out.println("把吃粑粑插入到小狗结点的后面");
sl.insertNode(node_6,"小狗");
sl.list();
System.out.println("===========================");
System.out.println("删除了花姑娘结点: ");
sl.deleteNode(node_2);
System.out.println("把吃粑粑改成了吃馍馍: ");
sl.edit("吃馍馍");
sl.list();
}
}
-输出结果:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)