解题思路:熟悉链表的基本操作,分析题目,按照基本操作写题,如能简化或发现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语言程序设计教程(第三版)课后习题7.3 (C语言代码)浏览:573 |
【亲和数】 (C语言代码)浏览:492 |
字符串的输入输出处理 (C语言代码)浏览:925 |
A+B for Input-Output Practice (IV) (C语言代码)浏览:451 |
求组合数 (C语言代码)浏览:1153 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:510 |
蛇行矩阵 (C语言代码)浏览:524 |
C语言程序设计教程(第三版)课后习题10.1 (C语言代码)浏览:561 |
C语言训练-亲密数 (C语言描述,反正怎么都能对)浏览:2158 |
输入输出格式练习 (C语言代码)浏览:744 |