import java.util.Stack;
class Node {
public int no;
public Node next;
public Node(int no) {
if (no >= 0) {
this.no = no;
}
}
@Override
public String toString() {
return "Node{" +
"no=" + no +
'}';
}
}
public class SingleLinkedList {
public Node head = new Node(0);
public void add(Node node) {
Node temp = head;
while (true) {
if (temp.no == node.no) {
return;
} else if (temp.next == null) {
break;
}
temp = temp.next;
}
temp.next = node;
}
public void addByOrder(Node node) {
Node temp = head;
while (true) {
if (temp.no == node.no) {
return;
} else if (temp.next == null) {
break;
} else if (temp.next.no > node.no) {
break;
}
temp = temp.next;
}
node.next = temp.next;
temp.next = node;
}
public void update(Node node) {
Node temp = head;
while (true) {
if (temp.next == null) {
return;
} else if (temp.next.no == node.no) {
node.next = temp.next.next;
temp.next = node;
return;
}
temp = temp.next;
}
}
public void delete(int no) {
Node temp = head;
while (true) {
if (temp.next == null) {
return;
}
if (temp.next.no == no) {
temp.next = temp.next.next;
return;
}
temp = temp.next;
}
}
public void show() {
Node temp = head.next;
while (true) {
if (temp == null) {
return;
}
System.out.println(temp);
temp = temp.next;
}
}
public int getLength() {
int length = 0;
Node temp = head.next;
while (temp != null) {
length++;
temp = temp.next;
}
return length;
}
public Node lastIndexNode(int index) {
Node temp = head.next;
int size = getLength();
if (temp == null) {
return null;
}
if (index > size || index <= 0) {
return null;
}
for (int i = 0; i < size - index; i++) {
temp = temp.next;
}
return temp;
}
public void reverse() {
Node cur = head.next;
Node next = null;
Node pre = new Node(0);
if (cur == null || cur.next == null) {
return;
}
while (cur != null) {
next = cur.next;
cur.next = pre.next;
pre.next = cur;
cur = next;
}
head.next = pre.next;
}
public void invertPrint() {
if (head.next == null) {
return;
}
Stack<Node> stack = new Stack<>();
Node cur = head.next;
while (cur != null) {
stack.push(cur);
cur = cur.next;
}
while (stack.size() > 0) {
System.out.println(stack.pop());
}
}
public void merge(Node n1, Node n2) {
Node cur = head;
while (n1 != null && n2 != null) {
if (n1.no <= n2.no) {
cur.next = n1;
n1 = n1.next;
} else {
cur.next = n2;
n2 = n2.next;
}
cur = cur.next;
}
cur.next = n1 == null ? n2 : n1;
}
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战