短消息功能模拟JAVA数据结构

模拟短消息接收和有关操作,最多存储20条短消息,所编写的程序应包含且不限于如下功能:

①短消息接收,如果短消息总数超出20条,则删除最早的短消息。

②短列表显示所有短消息。

③阅读任意一条短消息。

④删除任意一条短消息。

⑤消除所有短消息。

⑥具有操作功能菜单。

⑦短消息发送。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/721176
  • 这篇博客也不错, 你可以看下今天开始学Java 输入一个单向链表和一个节点的值,从单向链表中删除等于该值的节点,删除后如果链表中无节点则返回空指针。
  • 除此之外, 这篇博客: (java)给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位数字。中的 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
    public class AddTwoNumbers {
        public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
            //头结点
            ListNode dummyHead = new ListNode(0);
            ListNode p = l1;
            ListNode q = l2;
            ListNode current = dummyHead;
            //进位
            int carry = 0;
            while (p != null || q != null) {
                int x = (p != null) ? p.val : 0;
                int y = (q != null) ? q.val : 0;
                int sum = x + y + carry;
    //            carry = sum / 10;
                carry = sum >= 10 ? 1 : 0;
                current.next = new ListNode(sum % 10);
                current = current.next;
                if (p != null) {
                    p = p.next;
                }
                if (q != null) {
                    q = q.next;
                }
            }
            if (carry > 0) {
                current.next = new ListNode(carry);
            }
            return dummyHead.next;
        }
    
        public static void main(String[] args) {
    //        ListNode l1 = new ListNode(2);
    //        l1.next = new ListNode(4);
    //        l1.next.next = new ListNode(3);
    //
    //        ListNode l2 = new ListNode(5);
    //        l2.next = new ListNode(6);
    //        l2.next.next = new ListNode(4);
    
            ListNode l1 = new ListNode(9);
            l1.next = new ListNode(9);
            l1.next.next = new ListNode(9);
            l1.next.next.next = new ListNode(9);
            l1.next.next.next.next = new ListNode(9);
            l1.next.next.next.next.next = new ListNode(9);
            l1.next.next.next.next.next.next = new ListNode(9);
            l1.next.next.next.next.next.next.next = new ListNode(9);
    
    
            ListNode l2 = new ListNode(9);
            l2.next = new ListNode(9);
            l2.next.next = new ListNode(9);
            l2.next.next.next = new ListNode(9);
    
            AddTwoNumbers a = new AddTwoNumbers();
            ListNode listNode = a.addTwoNumbers(l1, l2);
            System.out.println(listNode);
        }
    }
    
    
    public class ListNode{
        int val;
        ListNode next;
    
        public ListNode(int x){
            val=x;
        }
    }
    
    
  • 您还可以看一下 汤小洋老师的手把手搭建Java学生信息管理系统【附源码】(毕设)课程中的 课程概述小节, 巩固相关知识点
  • 以下回答来自chatgpt:

    首先,我们可以使用Java的数据结构来实现短消息功能模拟。以下是使用链表数据结构来实现的示例代码:

    import java.util.LinkedList;
    
    public class ShortMessageSimulator {
        private LinkedList<String> messageList; // 链表用于存储短消息
    
        public ShortMessageSimulator() {
            messageList = new LinkedList<>();
        }
    
        public void receiveMessage(String message) {
            if (messageList.size() >= 20) {
                messageList.removeFirst(); // 当短消息总数超过20条时,删除最早的短消息
            }
            messageList.add(message);
        }
    
        public void displayMessageList() {
            for (String message : messageList) {
                System.out.println(message);
            }
        }
    
        public void readMessage(int index) {
            if (index >= 0 && index < messageList.size()) {
                System.out.println(messageList.get(index));
            } else {
                System.out.println("Invalid message index");
            }
        }
    
        public void deleteMessage(int index) {
            if (index >= 0 && index < messageList.size()) {
                messageList.remove(index);
                System.out.println("Message deleted successfully");
            } else {
                System.out.println("Invalid message index");
            }
        }
    
        public void clearMessages() {
            messageList.clear();
            System.out.println("All messages cleared");
        }
    
        public void showMenu() {
            System.out.println("1. Receive message");
            System.out.println("2. Display message list");
            System.out.println("3. Read message");
            System.out.println("4. Delete message");
            System.out.println("5. Clear all messages");
            System.out.println("6. Exit");
        }
    
        public void sendMessage(String message) {
            receiveMessage(message);
            System.out.println("Message sent successfully");
        }
    
        public static void main(String[] args) {
            ShortMessageSimulator simulator = new ShortMessageSimulator();
    
            boolean exit = false;
            while (!exit) {
                simulator.showMenu();
                int choice = Integer.parseInt(System.console().readLine("Enter your choice: "));
                switch (choice) {
                    case 1:
                        String message = System.console().readLine("Enter message: ");
                        simulator.receiveMessage(message);
                        break;
                    case 2:
                        simulator.displayMessageList();
                        break;
                    case 3:
                        int index = Integer.parseInt(System.console().readLine("Enter message index: "));
                        simulator.readMessage(index);
                        break;
                    case 4:
                        index = Integer.parseInt(System.console().readLine("Enter message index: "));
                        simulator.deleteMessage(index);
                        break;
                    case 5:
                        simulator.clearMessages();
                        break;
                    case 6:
                        exit = true;
                        break;
                    default:
                        System.out.println("Invalid choice");
                }
            }
        }
    }
    

    这个示例代码使用了LinkedList来存储短消息,它可以自动进行扩容,因此没有限制短消息总数。receiveMessage方法用于接收短消息,并自动删除最早的短消息。displayMessageList方法用于显示所有的短消息。readMessage方法用于阅读任意一条短消息。deleteMessage方法用于删除任意一条短消息。clearMessages方法用于清空所有短消息。showMenu方法用于显示操作功能菜单,用户可以选择不同的操作。sendMessage方法用于发送新的短消息,实际上就是调用了receiveMessage方法。

    你可以运行这段代码来测试短消息功能模拟的各个功能。请确保在运行代码之前已经正确安装并配置好Java环境。你可以根据需要自定义菜单和进行其他的优化和修改。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

这个可以用队列实现