gpt4 book ai didi

java - 从链表中删除节点

转载 作者:行者123 更新时间:2023-11-29 07:32:30 24 4
gpt4 key购买 nike

class StackNode{
int data;
StackNode next;

public StackNode(int data, StackNode next){
this.data = data;
this.next = next;
}
}

public class StackWithLinkedList {

StackNode root = null;

public void push(int data){
if(root == null)
root = new StackNode(data, null);
else {
StackNode temp = root;
while(temp.next != null)
temp = temp.next;

temp.next = new StackNode(data, null);
}
}

public int pop() throws Exception{
if(root == null)
throw new Exception("No Elements in Stack");
else {
StackNode temp = root;
while(temp.next != null)
temp = temp.next;
int data = temp.data;
temp = null;
return data;
}
}


public void print(){
StackNode temp = root;
while(temp!= null){
System.out.print(temp.data +" ");
temp = temp.next;
}
System.out.print("\n");
}

public static void main(String[] args) {
StackWithLinkedList stack = new StackWithLinkedList();
for(int i = 1; i<=15; i++){
Random randomGen = new Random();
stack.push(randomGen.nextInt(i));
}
stack.print();
System.out.print("\n");
try {
System.out.println("Deleted: "+stack.pop());
System.out.println("Deleted: "+stack.pop());
} catch (Exception e) {
e.printStackTrace();
}
stack.print();
}
}

我正在尝试使用 Linkedlist 实现 Stack。在 pop 函数中,我遍历到最后一个节点并将其设为空。当我打印列表时。它保持不变。将 root 分配给 temp 并使用它遍历会导致任何问题吗?

最佳答案

您可以通过简化实现来避免这一切。它只是一个堆栈,所以它是 LIFO。您需要做的就是将最后一个元素push 加入root。当 pop-ing 返回 root 中的 data 并将 root 设置为下一行。

对于 pushpop 操作。

类似于:

public void push(int data) {
root = new StackNode(data, root);
}

public int pop() throws Exception {
if (root == null)
throw new Exception("No Elements in Stack");
else {
int data = root.data;
root = root.next;
return data;
}
}

关于java - 从链表中删除节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40037534/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com