2012-11-23 75 views
0

我试图将以下内容转换为java。我做了一个学生课并通过使用LinkedList<Student> studentList. 加入StudentNode和Queue如何在java中执行以下4件事情?Java队列链表

Student *studentPtr; 
StudentNode *p; 
1. p.student = studentPtr; 
2. p.next = null; 

Queue readyQueue; 
3. readyQueue.head 
4. readyQueue.tail 

typedef struct{ 
    int age; 


}Student; 
struct my_struct 
    { 
     Student student; 
     struct my_struct* next; 
    }StudentNode; 


struct my_list 
{ 
    struct my_struct* head; 
    struct my_struct* tail; 
}Queue; 

任何人都可以请帮我把下面的函数转换成java方法吗?

StudentNode *makeStudentNode(Student *stPtr) 
{ 
    StudentNode *p = (StudentNode *)malloc(sizeof(StudentNode)); 

    p->student = stPtr; 
    p->next = NULL; 
    return p; 
} 

回答

1

java.util.LinkedList已经在库中可用,您可以使用它。

List<student> studList = new LinkedList<student>(); 
Student st = new Student(); 
st.setName("..."); 
studList.add(st); 
... 
+0

感谢。我知道使用LinkedList,但我不知道如何做以上4件事 – user1843686

+0

p.student = studentPtr;这将是什么样子? – user1843686

+0

我已经更新了代码,在java中没有指针 –

1
public class Student { 
    int age; 
} 

,而是一个队列

List<Student> studentList; 
代码

你将被初始化:

studentList = new ArrayList<Student>(); 

,或者如果你喜欢更接近队列:

studentList = new LinkedList<Student>(); 

加入学生:

studentList.add(new Student(23)); 
studentList.add(new Student(19)); 

和removeing第一要素

studenList.remove(0); 

如果的thelist定义为LinkedList的:

LinkedList<Student> studentList; 

,那么你可以用

studentList.remove(); 
移开磁头

您可以通过所有学生迭代:

for (Student student: studentList) { 
    System.out.println(student.age); 
} 

或使用迭代器:

for (Iterator<Student> iterator = studentList.iterator(); iterator.hasNext();) { 
    Student student = iterator.next(); 
    System.out.println(student.age); 
} 
+0

如何访问下一个? – user1843686