解题思路:熟悉链表的基本操作,分析题目,按照基本操作写题,如能简化或发现bug欢迎指正,谢谢

注意事项:观察题目输出,可知题目要求尾插法

参考代码:import java.util.Scanner;

public class Main {
   public static void main(String[] args){
       Scanner ms = new Scanner(System.in);
       int n = ms.nextInt();
       SinglyLinkedList list = new SinglyLinkedList();
       for (int i = 0; i < n; i++) {
           list.insert(i,ms.nextInt());
       }
       int aim=ms.nextInt();
       while(list.deleteAim(aim)==0){
           list.deleteAim(aim);
       }
       list.loop();
   }
}
class SinglyLinkedList{
   Node sentry;
   public SinglyLinkedList() {
       sentry=new Node(110,null);
   }
   static class Node{
       int value;
       Node next;
       public Node(int value, Node next) {
           this.value = value;
           this.next = next;
       }
   }
   private Node findNode(int index){
       int i=-1;
       Node p=sentry;
       while(p!=null){
           if(i==index) return p;
           p=p.next;
           i++;
       }
       return null;
   }
   private int findNode2(int value){
       int i=-1;
       Node p=sentry;
       while(p!=null){
           if(p.value==value) return i;
           p=p.next;
           i++;
       }
       return -5;
   }
   public void insert(int index,int value){
       Node last =findNode(index-1);
       //if(last==null)
       last.next=new Node(value,last.next);
   }
   public int deleteAim(int value){
       int  index = findNode2(value);
       if(index==-5) return -1;
       Node pre =findNode(index-1);
       Node aim=pre.next;
       pre.next=aim.next;
       return 0;
   }
   public void loop(){
       Node p =sentry.next;
       while(p!=null){
           System.out.print(p.value+" ");
           p=p.next;
       }
   }
}

点赞(0)
 

0.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论