实例讲解-单向列表的实现(1)
实例要求
在数据结构中,经常看到一个基本概念,对于一个链表的实现基本都是基于引用数据类型的操作。
如果要想设计一个链表,则肯定要设计一个链表的节点类。在此类中必须有一个属性可以保存下一个节点的引用地址。
根据此概念,设计一个节点类。以String为数据保存内容。
class Node{ // 定义节点类 private String data ; // 保存节点内容 private Node next ; // 表示保存下一个节点 public Node(String data){ // 通过构造设置节点内容 this.data = data ; // 设置内容 } public void setNext(Node next){ this.next = next ; // 设置下一个节点 } public Node getNext(){ // 取得下一个节点 return this.next ; } public String getData(){ return this.data ; // 取得节点的内容 } }; public class LinkDemo01{ public static void main(String args[]){ Node root = new Node("火车头") ; // 定义根节点 Node n1 = new Node("车厢-A") ; // 定义第一个车厢(第一个节点) Node n2 = new Node("车厢-B") ; // 定义第二个车厢(第二个节点) Node n3 = new Node("车厢-C") ; // 定义第三个车厢(第三个节点) root.setNext(n1) ; // 设置火车头的下一个节点是第一个车厢A n1.setNext(n2) ; // 设置第一个车厢的下一个节点是第二个车厢 n2.setNext(n3) ; // 设置第二个车厢的下一个节点是第三个车厢 printNode(root) ; // 从头开始输出,因为printNode()方法用static修饰了,所以才可以直接调用, } public static void printNode(Node node){ // 输出节点 System.out.print(node.getData() + "\t") ; // 输出节点的内容 if(node.getNext()!=null){ // 判断此节点是否存在下一个节点 printNode(node.getNext()) ; // 向下继续输出 } } };
总结:
本程序中,所有的关系都是手工添加的,如果要想程序变得有意义,则需要为其加入一个操作的封装。