解题思路:熟悉链表的基本操作,分析题目,按照基本操作写题,如能简化或发现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 人评分
字符串输入输出函数 (Java代码)浏览:1440 |
这可能是一个假的冒泡法浏览:991 |
C语言程序设计教程(第三版)课后习题8.7 (C语言代码)浏览:916 |
C语言程序设计教程(第三版)课后习题9.6 (C语言代码)浏览:373 |
剪刀石头布 (C语言代码)浏览:1436 |
众数问题 (C语言代码)浏览:675 |
小O的图案 (C语言代码)浏览:915 |
1202题解浏览:630 |
C语言训练-求矩阵的两对角线上的元素之和 (C语言代码)浏览:941 |
明明的随机数 (C语言代码)浏览:614 |