解题思路:熟悉链表的基本操作,分析题目,按照基本操作写题,如能简化或发现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分
1 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复