解题思路:熟悉链表的基本操作,分析题目,按照基本操作写题,如能简化或发现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 人评分
简单的a+b (C语言代码)浏览:681 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:518 |
WU-输出正反三角形 (C++代码)浏览:1018 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:526 |
C语言程序设计教程(第三版)课后习题9.3 (C语言代码)浏览:2090 |
1113题解浏览:784 |
回文数字 (C语言代码)浏览:2509 |
循环入门练习5 (C语言代码)浏览:829 |
【偶数求和】 (C语言代码)浏览:430 |
2003年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:667 |