วิธีการใช้งานโหนด

ฉันกำลังทำการบ้าน แต่ฉันรู้สึกเหมือนหลงทางไปหมด จุดประสงค์ของการบ้านนี้คือการใช้โหนดเพื่อวนรอบสแต็คและคิว แต่ฉันไม่คิดว่าฉันทำถูก ฉันไม่มีสิ่งใดในโค้ดปัจจุบันของฉันที่จะไปที่คลาสโหนดและฉันแน่ใจว่าฉันควรมีบางอย่างไปที่นั่น ฉันเพิ่งเริ่มต้นทำงานกับ 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 อย่างคลุมเครือ คุณจะต้องแทนที่การใช้งานอาร์เรย์ด้วยรายการที่เชื่อมโยง รายการที่เชื่อมโยงจะใช้โหนด - person Mike Rylander; 04.04.2013
comment
@ user1801067 อีกตัวอย่างหนึ่ง คราวนี้ของคิว roseindia.net/java/ ตัวอย่าง/java/util/QueueImplement.shtml - person Mike Rylander; 04.04.2013
comment
ฉันเข้าใจว่า Linked List ทำอะไร ฉันแค่ประสบปัญหาในการนำไปใช้ - 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 ในตัวอย่างด้วย Cars ที่แตกต่างกัน...

person TofuBeer    schedule 03.04.2013
comment
ฉันไม่เข้าใจสิ่งนี้จริงๆ คุณช่วยยกตัวอย่างให้ฉันหน่อยได้ไหม? - person user1801067; 04.04.2013