jxpldhz 2021-10-31 12:05 采纳率: 42.9%
浏览 64
已结题

救救孩子,简单的java程序

    利用类实现链表    
1).定义java类实现一个链表,参考C语言链表一节的知识,实现链表的创建,增加节点(有序插入),
删除节点,遍历,显示,查找
2).利用上面实现有链表,完成一个电话本管理程序,实现个人电话本的功能
可以增加条目,删除,修改,按姓名查找
  • 写回答

2条回答 默认 最新

  • 关注
    
    public class Node {
    
        String name;
        //自引用,下一个节点的地址
        Node next;
        public Node() {
            
        }
        public Node(String name) {
            this.name = name;
            next = null;
        }
    }
    
    public class Link {
    
        //定义头节点
        Node head;
        //初始化
        public Link() {
            //建表
            head = new Node();
            head.next = null;
        }
        //新增节点
        public void addNode(String data){
            /*1.获取表头
             *2.通过表头找到最后一个元素;
             *3.把新增的节点放到最后一个元素的后面
             * */
            Node p = head;
            while(p.next!=null){
                p=p.next;
            }
            //需要新增的节点
            Node temp = new Node(data);
            p.next = temp;
        }
        //删除节点
        public void delNode(String data){
            /*1.获取表头
             *2.通过表头找到最后一个元素;
             *3.把最后一个元素删除
             * */
            Node p = head;
            while(p.next!=null){
                //删除节点
                if(p.next.name.equals(data)){
                    p.next = p.next.next;
                    break;
                }else{
                    p=p.next;
                }
                
            }
        }
        //遍历
        public void display(){
            Node p = head;
            while(p.next!=null){
                System.out.println(p.next.name+"->>");
                p=p.next;
            }
        }
        //查找
        public void findNode(String data){
            /*1.获取表头
             *2.通过表头找到最后一个元素;
             *3.把最后一个元素删除
             * */
            Node p = head;
            while(p.next!=null){
                //删除节点
                if(p.next.name.equals(data)){
                    System.out.println("data="+p.next.name);
                    break;
                }else{
                    p=p.next;
                }
                
            }
        }
        //插入节点
        public void insertNode(String param,String data){
            
            /*param表示新增的节点要插入到该节点的后面
             * 
             *1.获取表头
             *2.通过表头找到param元素的节点;
             *3.把新增的节点放到改节点的后面
             * */
            Node p = head;
            while(p.next!=null){
                if(p.next.name.equals(param)){
                    Node t = p.next;
                    Node insertNode = new Node(data);
                    
                    insertNode.next = t.next;
                    t.next = insertNode;
                    break;
                }else{
                    p=p.next;
                }
            }
        }
        //链表大小
        public int size(){
            int n=0;
            Node p = head;
            while(p.next!=null){
                p=p.next;
                n++;
            }
            return n;
        }
        public static void main(String[] args) {
            Link link = new Link();
            link.addNode("组长");
            link.addNode("部门经理");
            link.addNode("主管副总");
            link.addNode("总经理");
            link.display();
            System.out.println("size="+link.size());
            link.delNode("部门经理");
            link.display();
            System.out.println("---------------------------");
            link.insertNode("组长", "部门经理");
            link.display();
        }
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月9日
  • 已采纳回答 11月1日
  • 创建了问题 10月31日

悬赏问题

  • ¥15 【悬赏】canvas 椭圆形内小球边缘与小球碰撞检测
  • ¥50 Delphi5环境下图片文件怎么转换成Base64编码?
  • ¥15 将GPDO_0引|脚设首成PWM1的输出引脚 实验编程该怎么写
  • ¥50 阿里云服务器 CentOS7.9 搭建 openvpn 服务
  • ¥100 开源软件弱点处理规范
  • ¥15 excel如何根据文件名自动搜索并批量导入文件?
  • ¥15 VScode 用户代码片段图标
  • ¥15 streamingtool
  • ¥15 MATLAB图像问题
  • ¥20 树莓派5做人脸情感识别与反馈系统