/*
* 创建一个学生对象数组 然后以链表的形式存储
* */
//创建一个学生类
class Student
{
String name; //名字
int age; //年龄
//用于初始化学生对象的构造函数
Student(String name, int age)
{
this.name = name;
this.age = age;
}
public void showInfo()//无发定义为静态
{
System.out.println("姓名:"+name+" 年龄:"+age);
}
}
//创建一个结点Node 每个结点的初始状态
class Node
{
Student data; //学生数据
Node next; //指向下一个节点 也就是下一个对象的地址 即等于下个对象的引用
Node()//为了创建空参数的新节点而写的构造函数 data没有指向
{
}
Node(Student data)
{
this.data = data;
this.next = null;
}
}
class Link
{
//创建一个单向链表 最后一个节点的n=null
public void toLink(Student[] stu,Node first)
{
Node temp = first;
for(Student s:stu)
{
Node n = new Node(s);//创建一个有学生对象的结点 n 连接到temp的后面
temp.next = n; //n连接在temp的后面 即temp.next指向n
temp = temp.next;//下一次循环本次的n就成了下一个n的temp即前一个结点
}
}
//遍历链表的方法
public void print(Node first)
{
Node temp = first; //第一个结点first没有数据
while(temp.next!=null)
{
temp = temp.next; //temp转为第二个结点 因为第一个结点first没有数据
temp.data.showInfo();
}
}
}
public class NodeDemo {
public static void main(String[] args) {
Student[] stu = {
new Student("泉州",20),
new Student("福州",15),
new Student("厦门",10),
new Student("泰宁",25),
new Student("莆田",30),
new Student("尤溪",35)
};
//创建一个头结点
Node first = new Node(); //first结点没有数据
Link link = new Link();
link.toLink(stu,first);
link.print(first);
}
}
结点的练习
链表的创建 对象的引用类似指针 类类型变量 引用指向对象