单链表的Java实现 (一)

前言

最近准备春招,数据结构和算法是短板,决定下功夫恶补。

链表能够实现数据的链式存储,可以做大量的数据插入删除,不用指定内存的大小。

目录

  • 结构
  • 头结点
  • 头部插入数据
  • 头部删除数据
  • 遍历数据

结构

  class List {
        //数据
        private int data;
        //储存指向下一节点的指针
        private List next;
        //构造方法,对象初始化
        public List(int data) {
            this.data = data;

        }
        //取数据
        public int getData() {
            return data;
        }
    }

头结点

  1. 当链表为空时,头结点 first 为 null
  2. 在头部插入数据时,将first指向新结点

头部插入数据


    //头部插入节点

    public void insertFirst(int data) {
        List listNode = new List(data);

        listNode.next = first;
        first = listNode;

    }

头部删除数据

  //删除节点

    public void deleteFirst() {
        first=first.next;

    }

遍历数据

 //遍历节点
    public void displayAll() {
        if (isEmpty()) {
            System.out.println("空链表");
        } else {
            for (List node = first; node != null; node = node.next) {
                System.out.println(node.getData());
            }
        }
    }

完整代码 (可以直接运行)

// 单链表
// author Ethan
//


public class LinkList {
    // 头结点
    public List first;

    public LinkList() {
        first = null;
    }

    public static void main(String[] args) {
        LinkList linkList = new LinkList();
        linkList.insertFirst(1);
        linkList.insertFirst(3);
        linkList.insertFirst(5);
        linkList.insertFirst(10);
        linkList.insertFirst(23);
        linkList.insertFirst(35);
        linkList.displayAll();
        System.out.println("/");
        linkList.deleteFirst();
        linkList.displayAll();

    }

    public boolean isEmpty() {
        if (first == null) {
            return true;
        } else
            return false;
    }


    //头部插入节点

    public void insertFirst(int data) {
        List listNode = new List(data);

        listNode.next = first;
        first = listNode;

    }


    //删除节点

    public void deleteFirst() {
        first=first.next;

    }

    //遍历节点
    public void displayAll() {
        if (isEmpty()) {
            System.out.println("空链表");
        } else {
            for (List node = first; node != null; node = node.next) {
                System.out.println(node.getData());
            }
        }
    }


    class List {
        private int data;
        private List next;

        public List(int data) {
            this.data = data;

        }

        public int getData() {
            return data;
        }
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值