0

处理一项任务,但我开始做错了,我不太了解节点,需要一些帮助将我的堆栈代码从使用数组转换为节点。

这是我的堆栈代码。

public class Lstack {
    int size;
    int numUsed = 0;
    Car[] stack;
    public Lstack(){
        stack = new Car[size];
    }
    public void push(Car x){
        stack[numUsed] = x;
        numUsed++;
    }
    public Car pop(){
        Car temp;
        numUsed--;
        temp = stack[numUsed];
        return temp;
    }
    public boolean isEmpty(){
        if(numUsed==0){
            return true;
        }
        else
            return false;
    }
    public int size(){
        return numUsed;
    }
    public void display(){
        System.out.println("--------------------------------------------");
        System.out.print("TOP | ");
        for(int i = 0; i < numUsed; i++){
            System.out.print(stack[i].plate +" | ");
        }
        System.out.println("--------------------------------------------");
    }

}

这是我的节点代码

public class Node {
    Node next;
    Car name;

    public Node(Node x, Car y){
        next = x;
        name = y;
    }
}

如何更改 Lstack 类以使用 Node 类。

4

1 回答 1

0

堆栈是反向的链表

对于链表,头节点是first集合中的节点,每个节点都指向该next 节点。
对于堆栈,头节点是last集合中的节点,每个节点都指向“上一个”节点。

所以对于一个堆栈我们有

 public void push(Node n){
     n.setNextNode(this.head);
     this.head = n;
 }

 public Node pop(){
     Node n = this.head;
     this.head = this.head.getNextNode();
     return n;
 }

您将需要添加错误连接代码并使 Node 通用。

于 2013-04-03T21:34:03.807 回答