这节课了解了Java中链表的构造。
题目描述
构建一个单向链表,链表中包含一组整数数据。输出链表中的所有元素。
要求:
1. 使用自定义的链表数据结构
2. 提供一个 LinkList 类来管理链表,包含构建链表和输出链表元素的方法
3. 在 main 函数中,创建一个包含一组整数数据的链表,然后调用链表的输出方法将所有元素打印出来
输入描述
包含多组测试数据,输入直到文件尾结束。
每组的第一行包含一个整数 n,表示需要构建的链表的长度。
接下来一行包含 n 个整数,表示链表中的元素。
输出描述
每组测试数据输出占一行。
按照顺序打印出链表中的元素,每个元素后面跟一个空格。
输入示例
5
1 2 3 4 5
6
3 4 5 6 7 8
输出示例
1 2 3 4 5
3 4 5 6 7 8
Java实现链表:
import java.util.Scanner;
//链表类:成员有头节点和链表长度
class LinkList{
public static class Node{//内部类:节点
int data;
Node next;
public Node(int data){
this.data=data;
this.next=null;
}
}
private Node head;//头节点
private int length;//链表长度
public LinkList(){//构造函数
this.head=null;
}
//插入数据
public Node insert(int data){
this.length++;//链表长度+1
Node newNode=new Node(data);
if(this.head==null){//当前链表为空
this.head=newNode;//插入节点为头节点
return this.head;
}else{//当前链表非空
Node currentNode=this.head;
while(currentNode.next!=null){
currentNode=currentNode.next;
}//插入链表尾部
currentNode.next=newNode;
return newNode;
}
}
public void printList(){//输出链表
Node currentNode=this.head;
while(currentNode!=null){
System.out.printf("%d%c",currentNode.data,currentNode.next==null?'\n':' ');
currentNode=currentNode.next;
}
}
}
public class Main{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
int n=sc.nextInt();
LinkList myList=new LinkList();
for(int i=0;i<n;i++){
myList.insert(sc.nextInt());
}
myList.printList();
}
sc.close();
}
}
注意29行与39行的区别,到底是当前节点为空,还是当前节点的next指针为空。