m0_62430883 2021-10-06 10:33 采纳率: 100%
浏览 40
已结题

Java数据结构实现单链表

用java语言实现单链表并完成如下操作:

/*1.建立具有5个元素的单链表,5个元素的值自己指定*/

 /*2.输出当前单链表*/

/*3.在第4个位置插入值为15的元素*/

 /*4.输出插入后的单链表*/

 /*5.输出单链表的长度*/

/*6.从键盘读入一个值,在单链表中查找该值并将结果输出*/

/*7.从键盘读入一个值i,在单链表中查找第i个元素并将结果输出*/  

/8.从键盘读入一个值i,删除单链表中第i个元素/

/*9.输出删除后的单链表*/
  • 写回答

1条回答 默认 最新

  • 关注
    
    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();
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

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

悬赏问题

  • ¥15 爬知乎登录之后内容加载不出来
  • ¥15 怎么用protues测量通频带
  • ¥15 zepelin使用sparkInterpreter 异常
  • ¥15 paho mqtt 接收不到消息
  • ¥15 函数r关于两个分量y,z方向上的图像,分开画r随y的图像,r随z的图像
  • ¥15 如何用Matlab求Pearcey函数的数值积分?
  • ¥15 一个简单的函数定义问题,输出结果是相反的,怎么回事呢?
  • ¥15 页面加载报错,不知道怎么处理
  • ¥20 vue-draggable-resizable选中状态保持
  • ¥15 flink cdc读取SqlServer2016