java单链表实现书籍管理系统

为了实现“java单链表实现书籍管理系统”,我们需要完成以下步骤:

  1. 定义Book类,包括属性:书名、作者、出版社、ISBN编号等
  2. 定义Node类,包括属性:存储的Book对象、指向下一个节点的引用Next等
  3. 定义LinkedList类,包括属性:链表长度、头节点引用head等
  4. 实现LinkedList类的各种操作方法,例如增加、删除、修改、查找、遍历等

下面是简单的代码示例:

Book类定义

public class Book {
    private String name;
    private String author;
    private String press;
    private String isbn;

    public Book(String name, String author, String press, String isbn) {
        this.name = name;
        this.author = author;
        this.press = press;
        this.isbn = isbn;
    }

    // Getter and Setter methods omitted for brevity
}

Node类定义

public class Node {
    private Book book;
    private Node next;

    public Node(Book book) {
        this.book = book;
        this.next = null;
    }

    // Getter and Setter methods omitted for brevity
}

LinkedList类定义

public class LinkedList {
    private Node head;
    private int length;

    public LinkedList() {
        this.head = null;
        this.length = 0;
    }

    // Getter and Setter methods omitted for brevity

    // Add a book to the linked list
    public void addBook(Book book) {
        Node newNode = new Node(book);
        if (head == null) {
            head = newNode;
        } else {
            Node current = head;
            while (current.getNext() != null) {
                current = current.getNext();
            }
            current.setNext(newNode);
        }
        length++;
    }

    // Remove a book from the linked list
    public void removeBook(Book book) {
        if (head == null) {
            return;
        }
        if (head.getBook().equals(book)) {
            head = head.getNext();
            length--;
            return;
        }
        Node current = head;
        while (current.getNext() != null && !current.getNext().getBook().equals(book)) {
            current = current.getNext();
        }
        if (current.getNext() != null) {
            current.setNext(current.getNext().getNext());
            length--;
        }
    }

    // Find a book in the linked list
    public Book findBook(String name) {
        if (head == null) {
            return null;
        }
        Node current = head;
        while (current != null) {
            if (current.getBook().getName().equals(name)) {
                return current.getBook();
            }
            current = current.getNext();
        }
        return null;
    }

    // Print the linked list
    public void printLinkedList() {
        Node current = head;
        while (current != null) {
            System.out.println(current.getBook().getName());
            current = current.getNext();
        }
    }
}

示例1:添加书籍,删除书籍,打印链表

// 创建一个成员为头节点为空链表的单链表对象
LinkedList bookList = new LinkedList();

// 添加3本书
Book book1 = new Book("Java从入门到精通", "张三", "清华大学出版社", "978-7-302-39108-1");
Book book2 = new Book("Java编程思想", "Bruce Eckel", "机械工业出版社", "978-7-111-52404-9");
Book book3 = new Book("Java并发编程实战", "Brian Goetz", "机械工业出版社", "978-7-111-39728-0");
bookList.addBook(book1);
bookList.addBook(book2);
bookList.addBook(book3);

// 遍历链表并打印书籍名
bookList.printLinkedList();
// 输出:
// Java从入门到精通
// Java编程思想
// Java并发编程实战

// 删除一本书,并再次打印链表
bookList.removeBook(book2);
bookList.printLinkedList();
// 输出:
// Java从入门到精通
// Java并发编程实战

示例2:查找一本书

// 创建一个成员为头节点为空链表的单链表对象
LinkedList bookList = new LinkedList();

// 添加3本书
Book book1 = new Book("Java从入门到精通", "张三", "清华大学出版社", "978-7-302-39108-1");
Book book2 = new Book("Java编程思想", "Bruce Eckel", "机械工业出版社", "978-7-111-52404-9");
Book book3 = new Book("Java并发编程实战", "Brian Goetz", "机械工业出版社", "978-7-111-39728-0");
bookList.addBook(book1);
bookList.addBook(book2);
bookList.addBook(book3);

// 查找一本书
Book book = bookList.findBook("Java编程思想");
System.out.println(book.getAuthor());
// 输出:Bruce Eckel

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java单链表实现书籍管理系统 - Python技术站

(0)
上一篇 2023年5月24日
下一篇 2023年5月24日

相关文章

  • 散列算法与散列码(实例讲解)

    当我们需要在计算机中存储大量数据时,通常需要使用散列算法来处理数据。简单来说,散列算法就是将一个任意长度的输入,通过计算得到一个固定长度的输出,这个固定长度的输出就是散列码。 散列算法常用的应用场景包括密码存储和数据校验等。 常用散列算法 目前最常用的散列算法包括MD5、SHA-1、SHA-256等。这些算法的优点在于对于相同的输入,输出结果总是一样的。但是…

    Java 2023年5月19日
    00
  • 用bat批处理实现163邮箱自动登陆的代码[已测]

    使用bat批处理实现网页自动化是一种高效的实现方式。下面是使用bat批处理实现163邮箱自动登陆的完整攻略及示例说明: 1. 准备工作 首先,需要在电脑上安装好以下两个工具: 安装好Chrome浏览器 安装好Chrome浏览器的Driver 其中,Chrome浏览器的Driver需要根据自己安装的Chrome版本来选择,可以在 https://npm.tao…

    Java 2023年6月16日
    00
  • Java ArrayList使用总结

    Java ArrayList使用总结 本文主要介绍Java ArrayList的使用方法,包括以下内容: ArrayList的定义和初始化 ArrayList的常用操作 ArrayList的遍历 ArrayList的常见问题及解决方案 1. ArrayList的定义和初始化 ArrayList是Java语言中的集合类,用于存储一组相同类型的元素。可以通过以下…

    Java 2023年5月26日
    00
  • JSP+ MySQL中文乱码问题post提交乱码解决方案

    JSP + MySQL 中文乱码问题主要发生在使用post方式提交数据时,提交的中文字符在数据库中查询后会变成乱码。下面我将详细讲解如何解决此问题。 问题分析 JSP中表单提交后,浏览器会自动将中文字符转码为UTF-8编码,而JDBC默认使用ISO8859_1编码与数据库进行交互,因此,需要将数据先从UTF-8编码转换为ISO8859_1编码,再进行插入,这…

    Java 2023年5月20日
    00
  • springboot+VUE前后端分离实现疫情防疫平台JAVA

    SpringBoot+Vue前后端分离实现疫情防疫平台JAVA 本文将详细介绍如何使用SpringBoot和Vue实现一个疫情防疫平台。在本文中,我们将使用SpringBoot 2.x版本和Vue 2.x版本。 1. 前后端分离架构 前后端分离架构是一种将前端和后端分离开发的架构模式。在这种架构中,前端和后端分别独立开发,通过API接口进行通信。前端负责展示…

    Java 2023年5月18日
    00
  • SpringSecurity自定义AuthenticationProvider无法@Autowire的解决

    如果在使用Spring Security时,遇到需要自定义 AuthenticationProvider 的情况,同时自定义的 AuthenticationProvider 中需要使用 @Autowired注入其他的bean,却发现无法注入的情况,此时可以按照以下步骤进行解决。 问题背景 在使用Spring Security时,如果需要自定义 Authent…

    Java 2023年5月20日
    00
  • Apache Log4j2 报核弹级漏洞快速修复方法

    下面我来为您讲解“Apache Log4j2报核弹级漏洞快速修复方法”的完整攻略。 一、背景介绍 在2021年12月8日,美国网络安全局 (NSA) 警告公众一种名为 Log4Shell 的漏洞,该漏洞存在于 Log4j 2.x 中,攻击者可通过该漏洞远程执行代码,甚至可以获得系统控制权。由于该漏洞的严重性,被称为“核弹级漏洞”。 二、修复方法 1.更新 L…

    Java 2023年6月2日
    00
  • Java负载均衡算法实现之轮询和加权轮询

    下面是详细讲解Java负载均衡算法实现之轮询和加权轮询的完整攻略。 1. 负载均衡简介 负载均衡是指将工作负载分摊到多个处理单元上,以达到更好的性能、可扩展性和可靠性,可以被应用于各种计算系统中,包括数据库、Web服务器、应用服务器等等。负载均衡算法就是如何分配负载到各个处理单元的问题。 2. 轮询算法 轮询算法是最常见的负载均衡算法之一,其基本原理是按照事…

    Java 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部