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;

Bur 首先阅读 java Collections 的介绍

于 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,通过此链接有一个很好的 stackoverflow 解释供您参考。

我的建议是从两个类开始:StudentQueue(实现 Queue 接口)和 StudentNode(就像您在示例中所做的那样)。通过这种方式,您可以利用您在 C 中了解的代码和概念并将它们应用于 Java,同时了解 Java 的集合之一。它将消除您的两个额外课程中的一个,并且它比直接跳入列表更容易开始。

于 2012-11-22T03:34:46.890 回答