2

これをJavaに変換する方法を教えてください。

typedef struct{
    int age;
    int dateOfBirth;
}StudentInfo;

typedef StudentInfo *StudentPtr;

typedef struct studentNode{
    StudentPtr studentPtr;
    struct studentNode *next;
}StudentNode;

typedef struct {
    StudentNode *head;
    StudentNode *tail;
}Queue;

以下は私が試したことです。

class StudentInfo{
int age;
int dateOfBirth;
}

class StudentNode{
StudentInfo studentPtr;
StudentNode next;
}

class Queue{
StudentNode head;
StudentNode tail
}

それを行う別の方法はありますか?そのためだけに 2 つの追加クラスを作成せずに?

4

3 に答える 3

3

StudentNode と Queue の代わりに、

ArrayList<StudentInfo> studentList;

バーは最初に Java コレクションの概要をお読みください

于 2012-11-22T01:49:46.673 に答える
3

StudentNode クラスと StudentInfo クラスを結合することから始めると、次のようになります。

class StudentNode {
    int age
    int dateOfBirth
    StudentNode next
}

もちろん、これは生徒の情報を知っているオブジェクトがリストについても知っていることを意味しますが、これはあまり望ましくないかもしれません。または、LinkedList クラスを使用することもできます。

LinkedList<StudentInfo> queue = new LinkedList<>();

これで二人は脱却…

于 2012-11-22T01:50:34.890 に答える
2

私の理解では、あなたがやろうとしているのは、StudentNode のキューを作成することです。各 StudentNode には、データ (StudentInfo) とキュー内の次の項目への参照を保持するプロパティがあります。

これは、Java の Queue インターフェイスについて説明している最初のリンクです。

AlexWien と Jeff は、LinkedLists と ArrayLists について話し合っています。詳細を参照できるように、このリンクからスタックオーバーフローに関する優れた説明があります。

私の推奨事項は、StudentQueue (Queue インターフェースを実装する) と StudentNode (例で行ったように) の 2 つのクラスから始めることです。このようにして、Java のコレクションの 1 つについて学びながら、C で知っているコードと概念を利用して Java に適用することができます。これにより、2 つの余分なクラスの 1 つが削除され、List に直接ジャンプするよりも簡単に開始できます。

于 2012-11-22T03:34:46.890 に答える