Mengulangi struktur simpul tanpa induk

Saya memiliki struktur simpul, setiap simpul memiliki simpul anak tetapi tidak ada simpul induk. Saya perlu mengulangi struktur ini sambil mengumpulkan info ke 3 ganda. Karena Java tidak memiliki referensi, saya tidak dapat menggunakan rekursi kecuali saya akan membuat kelas untuk ganda ini, dan saya juga tidak dapat melakukannya tanpa rekursi karena node tidak memiliki induk.

Apakah ada cara untuk melakukannya di Java tanpa mengubah struktur atau membuat kelas lain?

Struktur:

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 sumber
comment
Saya tidak mengerti masalah Anda. Menampilkan struktur sebenarnya dari node Anda akan membantu.   -  person Luiggi Mendoza    schedule 05.11.2012
comment
Anda dapat menggunakan pola Pengunjung, tetapi ini memerlukan penambahan setidaknya satu kelas lagi dan satu metode lagi.   -  person millimoose    schedule 05.11.2012
comment
Anda benar-benar dapat menggunakan rekursi di Java.   -  person Matt Ball    schedule 05.11.2012
comment
Anda benar-benar dapat menggunakan rekursi di Java. - tidak mengatakan sebaliknya.. java tidak punya referensi?? - kejutan! Anda tidak dapat meneruskan int ke suatu fungsi menggunakan ref (seperti di c++ atau c#)   -  person Vladp    schedule 05.11.2012
comment
Jika node berada di Skeleton[] nodes, maka Anda dapat mengulangi array ini dan mendapatkan datanya. Apa masalah sebenarnya?   -  person Luiggi Mendoza    schedule 05.11.2012
comment
@Vladp Java memang memiliki referensi; Anda meminta jenis referensi yang sangat spesifik. Jika Anda ingin meneruskan int dengan referensi, Anda bebas meneruskan satu elemen int[]. Kedua, tidak ada yang bisa dicapai di Java tanpa mengadakan kelas. Ketika kelas adalah satu-satunya alat yang Anda miliki, semuanya diselesaikan oleh kelas lain. Jika ledakan jumlah file mengganggu Anda, buat kelas private static, atau sertakan beberapa definisi kelas tingkat atas privat paket ke dalam satu file.   -  person Marko Topolnik    schedule 05.11.2012
comment
@Marko Topolnik maaf, maksud saya sintaks 'ref' dari c/c++/c#, tapi ini cukup.   -  person Vladp    schedule 05.11.2012


Jawaban (1)


Jika Anda menyatakan:

double[] results = new double[3];

hasilnya akan menjadi penunjuk ke array tiga elemen ganda. Anda dapat menyebarkannya selama rekursi, dan memodifikasi elemen sesuai kebutuhan.

Namun, jangan takut untuk membuat kelas tambahan di Java. Anda dapat mendeklarasikan kelas di dalam salah satu kelas Anda yang lain, untuk penggunaan lokal.

person Patricia Shanahan    schedule 04.11.2012