题解 | #【模板】链表#
【模板】链表
https://www.nowcoder.com/practice/97dc1ac2311046618fd19960041e3c6f
import java.util.Scanner;
/**
* @BelongsProject: homework
* @Author: Ling xi_Li
* @CreateTime: 2023-10-25 12-40
* @Description: TODO
*/
class Node {
private int data;
private Node next;
public Node() {
this.data = 0;
this.next = null;
}
public Node(int data) {
this.data = data;
this.next = null;
}
public Node getNext() {
return next;
}
public int getData() {
return data;
}
public void setNext(Node next) {
this.next = next;
}
}
class Link {
//TODO head是带空节点的头指针
private Node head;
public Link() {
head = null;
}
public Link(Node head) {
this.head = head;
}
public boolean isEmptyLink() {
return head.getNext() == null;
}
public void append(Node node) {
if (isEmptyLink()) {
this.head.setNext(node);
} else {
Node temp = this.head.getNext();
while (temp.getNext() != null) {
temp = temp.getNext();
}
temp.setNext(node);
}
}
public void add(Node node) {
if (isEmptyLink()) {
this.head.setNext(node);
} else {
node.setNext(this.head.getNext());
this.head.setNext(node);
}
}
public void insert(int x, int y) {
Node node = new Node(y);
int flag = 0;
Node temp = this.head;
while (temp.getNext() != null) {
if (temp.getNext().getData() == x) {
node.setNext(temp.getNext());
temp.setNext(node);
flag = 1;
break;
}
temp = temp.getNext();
}
if (flag == 0) {
temp.setNext(node);
}
}
public void remove(int num) {
if (isEmptyLink()) return;
Node temp = this.head;
Node current = temp.getNext();
while (current != null) {
if (current.getData() == num) {
temp.setNext(current.getNext());
current.setNext(null);
break;
}
temp = current;
current = current.getNext();
}
}
public void show() {
if (isEmptyLink()) {
System.out.println("NULL");
return;
}
Node temp = this.head.getNext();
while (temp != null) {
System.out.print(temp.getData() + " ");
temp = temp.getNext();
}
}
}
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
Link list = new Link(new Node());
int n = in.nextInt();
for (int i = 0; i < n; i++) {
String op = in.next();
if (op.equals("insert")) {
list.insert(in.nextInt(), in.nextInt());
} else if (op.equals("delete")) {
list.remove(in.nextInt());
}
}
list.show();
}
}