1.demo需求:
用Java语言的链表处理学生成绩问题,从键盘输入5学生的学号、姓名、成绩。
2.分析:
首先声明节点的数据类型,让每个节点包含一个数据,并且包含指向下一个数据的指针,使所有数据能被串在一起而形成一个列表结构。
创建Node类和Linked List类,在Linked List类中,除了定义两个Node类节点指针,分别指向链表的第一个节点和最后一个节点外,还在该类中声明三个方法,boolean isEmpty()、void print()、void inset(int data,String names,int np)。
3.代码:
`class Node {
int data;
int np;
String names;
Node next;
//节点声明的构造方法
public Node(int data,int np,String names){
this.data = data;
this.np = np;
this.names = names;
this.next = next; }
}`
public class LinkedList{
private Node first;
private Node last;
//判断目前链表是否为空列表
public boolean isEmpty(){
return first == null;
}
//将目前列表的内容打印
public void print(){
Node current = first;
while(current != null){
System.out.println("["+current.data" "+current.names" "+current.np+"]");
current = cunrrent.next;
}
System.out.println();
}
//将指定的节点插入至目前的列表
public void insert(int data,String names,int np) {
Node newNode = new Node(data,names,np);
if(this.isEmpty()){
first = newNode;
last = newNode;
}else{
//将两个节点串连起来
last.next = newNode;
last = newNode;
}
}
}
接着再利用数据声明来建立5个学生成绩的单向链表,并访问每一个节点来打印成绩。
public class Test{
public static void main(String args[]) throws IOException{
BufferedReader buf;
buf = new BufferedReader(new InputStreamReader(System.in));
int num;
String name;
int score;
System.out.println("请输入5个学生数据");
LinkedList list = new LinkedList();
for(int i = 1 ; i < 6 ; i++){
System.out.println("请输入学号:");
num = Integer.parseInt(buf.readLine);
System.out.println("请输入姓名:");
name = buf.readLine();
System.out.println("请输入成绩:");
score = Integer.parseInt(buf.readLine);
list.insert(num,name,score);
System.out.println("------------");
}
System.out.println("学生成绩");
System.out.println("学号姓名成绩========");
list.print();
}
}