วนซ้ำโครงสร้างโหนดที่ไม่มีพาเรนต์

ฉันมีโครงสร้างโหนด แต่ละโหนดมีโหนดลูก แต่ไม่มีโหนดหลัก ฉันต้องทำซ้ำโครงสร้างนี้ในขณะที่รวบรวมข้อมูลเป็น 3 เท่า เนื่องจาก java ไม่มีการอ้างอิง ฉันจึงไม่สามารถใช้การเรียกซ้ำได้ เว้นแต่ฉันจะสร้างคลาสสำหรับ doubles เหล่านี้ และฉันก็ทำไม่ได้หากไม่มีการเรียกซ้ำเนื่องจากโหนดไม่มีพาเรนต์

มีวิธีที่จะทำใน java โดยไม่ต้องเปลี่ยนโครงสร้างหรือสร้างคลาสอื่นหรือไม่?

โครงสร้าง:

public class Skeleton
{

    public Vector2D head;
    public int numberOfNodes;
    public Skeleton[] nodes;
    public int skeletonSize;
    public Color color;
...
}

person Vladp    schedule 04.11.2012    source แหล่งที่มา
comment
ฉันไม่เข้าใจปัญหาของคุณ การแสดงโครงสร้างที่แท้จริงของโหนดของคุณจะช่วยได้   -  person Luiggi Mendoza    schedule 05.11.2012
comment
คุณสามารถใช้รูปแบบผู้เยี่ยมชมได้ แต่จะต้องเพิ่มคลาสอย่างน้อยหนึ่งคลาสและอีกหนึ่งวิธี   -  person millimoose    schedule 05.11.2012
comment
คุณสามารถใช้การเรียกซ้ำใน Java ได้อย่างแน่นอน   -  person Matt Ball    schedule 05.11.2012
comment
คุณสามารถใช้การเรียกซ้ำใน Java ได้อย่างแน่นอน - ไม่ได้พูดเป็นอย่างอื่น.. java ไม่มีการอ้างอิง?? - เซอร์ไพรส์! คุณไม่สามารถส่ง int ไปยังฟังก์ชันโดยใช้การอ้างอิง (เช่นใน c++ หรือ c#)   -  person Vladp    schedule 05.11.2012
comment
หากโหนดอยู่ใน Skeleton[] nodes คุณสามารถวนซ้ำอาร์เรย์นี้และรับข้อมูลได้ ปัญหาที่แท้จริงคืออะไร?   -  person Luiggi Mendoza    schedule 05.11.2012
comment
@Vladp Java มีการอ้างอิง คุณกำลังขอข้อมูลอ้างอิงประเภทที่เฉพาะเจาะจงมาก หากคุณต้องการส่ง int โดยการอ้างอิง คุณสามารถส่งหนึ่งองค์ประกอบ int[] ได้อย่างอิสระ ประการที่สอง ไม่มีสิ่งใดสำเร็จได้ใน Java โดยไม่ต้องแบ่งคลาสออก เมื่อคลาสเป็นเครื่องมือเดียวที่คุณมี ทุกอย่างจะได้รับการแก้ไขโดยคลาสอื่น หากจำนวนไฟล์จำนวนมากรบกวนจิตใจคุณ ให้สร้างคลาส private static หรือรวมคำจำกัดความคลาสระดับบนสุดแบบไพรเวทแบบแพ็คเกจหลาย ๆ ไฟล์ไว้ในไฟล์เดียว   -  person Marko Topolnik    schedule 05.11.2012
comment
@Marko Topolnik ขออภัยฉันหมายถึงไวยากรณ์ 'อ้างอิง' จาก c/c++/c# แต่สิ่งนี้จะทำได้   -  person Vladp    schedule 05.11.2012


คำตอบ (1)


หากคุณประกาศ:

double[] results = new double[3];

ผลลัพธ์จะเป็นตัวชี้ไปยังอาร์เรย์สามองค์ประกอบที่เป็นสองเท่า คุณสามารถส่งผ่านระหว่างการเรียกซ้ำ และแก้ไของค์ประกอบได้ตามต้องการ

อย่างไรก็ตาม อย่ากลัวที่จะสร้างคลาสเพิ่มเติมใน Java คุณสามารถประกาศคลาสภายในคลาสอื่นของคุณเพื่อการใช้งานในเครื่องได้

person Patricia Shanahan    schedule 04.11.2012