题解 | #在链表中删除指定值的节点#
import java.io.;
import java.util.;
class Node{
public int value;
public Node next;
public Node(int data){
this.value=data;
}
//String数组转链表 非环 public static Node tranStringNoLoop(String[] nums){ Node head=new Node(Integer.parseInt(nums[0])); Node cur=head; for(int i=1;i<nums.length;i++){ cur.next=new Node(Integer.parseInt(nums[i])); cur=cur.next; } return head; } //int数组转链表 非环 public static Node tranIntegerNoLoop(int[] nums){ Node head=new Node(nums[0]); Node cur=head; for(int i=1;i<nums.length;i++){ cur.next=new Node(nums[i]); cur=cur.next; } return head; } //打印链表[非环] public static void printNodeList(Node head){ StringBuilder sb=new StringBuilder(); while (head!=null){ sb.append(head.value).append(" "); head=head.next; } System.out.println(sb.toString()); }
}
public class Main{
public static Node removeValue1(Node head,int num){ Stack<Node>stack=new Stack<Node>(); while(head!=null){ if(head.value!=num){ stack.push(head); } head=head.next; } while(!stack.isEmpty()){ //反转 stack.peek().next=head; //移动 head=stack.pop(); } return head; } public static void main(String[]args)throws IOException{ BufferedReader in=new BufferedReader(new InputStreamReader(System.in)); in.readLine(); String[] nums=in.readLine().split(" "); int num=Integer.parseInt(in.readLine()); Node head=Node.tranStringNoLoop(nums); head=removeValue1(head,num); Node.printNodeList(head); }
}