单链表之增删改查

1.java中构造方法含义
一个与当前类同名的方法成为构造方法。

构造方法的特点

1、与当前类同名;
2、没有返回值;
3.一旦自定义构造方法后,系统将不再自动生成无参数的构造方法;
4.不能加void定义类型,它的无返回值与void不同,若用void定义类型,则系统不会将其认定为构造方法,即不会再需要时自动调用

构造方法的作用
在类的实例对象刚产生时,该类中的构造方法将会被自动调用,我们可以再该构造方法中加入需要完成初始化工作的代码。

2.while(true)的含义:
无限循环,表达式一直是真的,使用break语句跳出。

3.初始化是为了给头结点一个方向。

4.二维数组的遍历:
注意:二维数组的长度就是一位数组的个数。


单链表增删改查代码:

package com;
public class Node{
    Node next;
    Integer id;
    String name;


    //初始化
    public Node(Integer id,String name){
this.id=id;
this.name=name;
    }

    @Override
    public String toString() {
        return "Node{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }
}
package com;
public class Demo{

    public static void main(String[] args) {
        Demo demo=new Demo();

        Node one=new Node(1,"pp");
        Node three=new Node(3,"mm");
        Node two=new Node(2,"ll");
        Node four=new Node(4,"nn");

        demo.add2(one);
        demo.add2(three);
        demo.add2(two);
        demo.add2(four);


       // demo.update(four);
        demo.delete(4);
        demo.show();
    }


    private Node head=new Node(0,"");
    //添加
    public void add(Node node){
        Node temp=head;

        while(true)
        {
            if(temp.next==null)
            {
                break;
            }
            temp=temp.next;
        }
        temp.next=node;
    }


    //有序添加(按大小插入——遍历——temp是被插入结点的前一个结点——核心代码)
    public void add2(Node node){
        Node temp=head;

        boolean flag=false;
        while(true)
        {
            if(temp.next==null)
            {
                break;  //说明temp已经在链表的最后
            }
            if(temp.next.id>node.id)
            {
                break;
            }
            else if(temp.next.id==node.id)
            {
                flag=true;

                break;
            }
            temp=temp.next;

        }
        if(flag) {
            System.out.println("编号已经存在,不能添加"+node.id);//说明编号存在
        }
        else{
            node.next=temp.next;
            temp.next=node;
        }


    }

    //展示
    public void show(){

      if(head.next==null)
    return;
        Node temp=head.next;
        while(true)
        {
            if(temp==null)
            return;
            System.out.println(temp);
            temp=temp.next;
        }
    }

    //根据id来修改结点
    public void update(Node node){

      boolean flag=false;
        if(head.next==null)
            return ;
        Node temp=head.next;
        while(true)
        {
            if(temp==null)
              break;
            if(temp.id==node.id)
            {
                flag=true;
                break;
            }
            temp=temp.next;

        }
        if(flag)
        {
            temp.name=node.name;

        }else{
            System.out.println("没有找到");
        }

        }

        //删除

        public void delete(int id){

            boolean flag=false;
            if(head.next==null)
                return;
            Node temp=head.next;
            while(true)
            {
                if(temp.next==null)  //已经到最后
                    break;
                if(temp.next.id==id)    //找到待删除节点的前一个结点
                {
                    flag=true;
                    break;
                }
                temp=temp.next;

            }
            if(flag)
            {
                temp.next=temp.next.next;

            }else{
                System.out.println("没有找到");
            }

        }




}

注意:
插入和删除都是要找到单链表的前一个结点。
模式基本相同。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值