Как использовать узлы

Я работаю над домашним заданием, но чувствую, что совершенно потерялся. Целью этого домашнего задания является использование узлов для циклического перемещения по стекам и очередям, но я не думаю, что делаю это правильно. Нет, где в моем текущем коде у меня есть что-то, что идет к классу узла, и я уверен, что у меня должно быть что-то там. Я только начинаю работать над main, тестирую функции и прочее.

Класс автомобиля

public class Car {
    String plate;
    char code;

    public Car(String plate, char code){
    }
    public String getPlate(){
        return plate;
    }
    public void setPlate(String inPlate){
        plate = inPlate;
    }
}

класс узла

public class Node {
    Node next;
    Car name;

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

Класс Lstack

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 Lqueue {
    int size;
    int numUsed = 0;
    Car[] queue;
    public Lqueue(){
        queue = new Car[size];
    }
    public void insert(Car x){
        int index = numUsed;
        for(int i = numUsed; i >= 0; i--){
            queue[index + 1] = queue[index];
            index--;
        }
        queue[0] = x;
    }
    public Car remove(){
        Car temp;
        temp = queue[numUsed];
        queue[numUsed] = null;
        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("Front | ");
        for(int i = numUsed; i >= 0; i--){
            System.out.print(queue[i].plate +" | ");
        }
        System.out.println("--------------------------------------------");
    }
}

person user1801067    schedule 03.04.2013    source источник
comment
Ваше поле size в Lstack не инициализировано. По умолчанию он будет равен 0. Передайте аргумент вашему конструктору или установите значение по умолчанию, отличное от 0 (надеюсь).   -  person Sotirios Delimanolis    schedule 04.04.2013


Ответы (2)


google: "реализация связанного списка"

У вас должны быть узлы в ваших структурах данных.

Вы не должны использовать массивы.

person Mike Rylander    schedule 03.04.2013
comment
Можете ли вы показать мне, что я могу сделать, чтобы исправить это? Вся эта штука с узлом для меня в новинку. - person user1801067; 04.04.2013
comment
@user1801067 Google возвращается с множеством руководств, попробуйте: codingfreak.blogspot.com/2009/08/ - person Mike Rylander; 04.04.2013
comment
@ user1801067 стеки и очереди будут очень похожи на связанный список. - person Mike Rylander; 04.04.2013
comment
Я посмотрел по ссылке и наполовину понял, что происходит. Я не знаю, как заставить node.next быть в моем коде и работать эффективно. Я имею в виду, что у меня есть где-нибудь близко? - person user1801067; 04.04.2013
comment
@user1801067 user1801067 смутно, вы захотите заменить использование массива связанным списком. Связанный список будет использовать узлы. - person Mike Rylander; 04.04.2013
comment
@ user1801067 другой пример, на этот раз очереди roseindia.net/java/ пример/java/util/QueueImplement.shtml - person Mike Rylander; 04.04.2013
comment
я понимаю, что делает связанный список, мне просто трудно его реализовать. - person user1801067; 04.04.2013
comment
@ user1801067 проверьте stackoverflow.com/questions/8557192/ для начала. - person Mike Rylander; 04.04.2013

Начните с замены Car[] на Node[]. в классе Lqueue.

Затем измените Node[] на Node и вместо использования массива используйте переменную node.next для обхода списка.

Вот страница в Википедии со связанными списками. Замените 12, 99 и 37 в примере разными автомобилями...

person TofuBeer    schedule 03.04.2013
comment
я действительно не понимаю этого. можете ли вы сделать пример для меня, пожалуйста? - person user1801067; 04.04.2013