java遍历单链表(删除尾结点、添加)

package 每日算法题;

import java.awt.*;
import java.util.Collection;

public class 链表 {
    public Node head;//头结点
    public Integer N=0;//结点个数
    class Node{
        public int date;
        public Node next;
        public Node(int date) {
            this.date = date;
        }
    }
    //判断链表是否为空
    public  boolean isEmpty(){
        //return head==null;
        return  N==0;//结点个数为0代表为空
    }
    public  int size(){
        return N;
    }
    //增加节点
    public  void add(int date){
        if (isEmpty()){//如果为空 直接赋给头
            head=new Node(date);
        }else{
            Node node =head;
            while (node.next!=null){
                node=node.next;//找到尾结点 将值赋给尾结点
            }
            node.next=new Node(date);//给尾结点挂链
        }
        N++;//长度++
    }
    //刪除尾结点
    public  void remove(){
        if(isEmpty()){
            throw  new RuntimeException("结点为空");//如果链表长度为0,报异常
        }else if(size()==1){
            head=null; //当只有一个结点是,直接给head赋null
        }else {
            Node node=head;
            while(node.next!=null&&node.next.next!=null){
                node=node.next;//找到倒数第二个结点
            }
            node.next=null;//倒数第二个结点的next赋null
        }
        N--;//长度--

    }
    //输出函数
    public void print(){
        Node p=head;
        while (p!=null){
            System.out.println(p.date);
            p=p.next;

        }

    }

    public static void main(String[] args) {
        链表 list=new 链表<>();
        list.add(3);
        list.add(2);
        list.add(5);
        list.print();


    }
}

你可能感兴趣的:(Java,初学,程序)