美文网首页
第五章:面向对象基础——单向链表(1)。

第五章:面向对象基础——单向链表(1)。

作者: 孤意的学习笔记 | 来源:发表于2017-10-16 16:31 被阅读0次

实例要求

在数据结构中经常看见的一个基本概念,对于链表的实现都是基于引用数据类型的基本操作。

本章目标

  • 了解引用传递的深入应用
  • 了解链表的基本概念

1、具体内容

如果要想实现链表,则肯定要设计一个链表的节点类,在此类中
必须有一个属性可以保存下一个节点的引用地址。

根据此概念,设计一个节点类。

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 ;  // 取得节点的内容
    }
};

下面编写代码测试以上的节点类,首先应该掌握节点间的操作关系,之后再进行封装操作。

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) ;            // 设置第二个车厢的下一个节点是第三个车厢
    }
};

基本关系已经确定出来了,如何输出呢?
如果想要进行输出,则肯定只能使用递归操作。

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) ;           // 从头开始输出
    }
    public static void printNode(Node node){    // 输出节点
        System.out.print(node.getData() + "\t") ;   // 输出节点的内容
        if(node.getNext()!=null){       // 判断此节点是否存在下一个节点
            printNode(node.getNext()) ; // 向下继续输出
        }
    }
};
输出结果:
火车头 车厢-A    车厢-B    车厢-C    

2、总结

本程序中,所有的关系都是通过用户手工进行设置的,如果要想让其真正变得有意义,则需要为其加入一个操作的封装。

相关文章

  • 第五章:面向对象基础——单向链表(1)。

    实例要求 在数据结构中经常看见的一个基本概念,对于链表的实现都是基于引用数据类型的基本操作。 本章目标 了解引用传...

  • 第五章:面向对象基础——单向链表(2)。

    本章目标 深入链表的操作 输入黎姐诶不累的应用 本实例主要采用的知识 将使用内部类完成链表的操作。 1、具体内容 ...

  • 数据结构与算法——线性表3

    线性表——单向循环链表 3、单向循环链表 在单向链表的基础上,单向链表的尾结点的Next指向链表的头部,就是为循环...

  • 8.单向链表SingleLinkList

    目录:1.单向链表的定义2.单向链表的图解3.单向链表定义操作4.单向链表的实现 1.单向链表的定义 2.单向链表...

  • 用Java写单向链表

    数据结构—单向链表 为了巩固自己的基础知识,这次就用 Java 来写一个单向链表。问:什么是单向链表?首先链表是数...

  • 10.单向循环链表SingleCycleLinkList

    目录:1.单向循环链表的定义2.单向循环链表的图解3.单向循环链表定义操作4.单向循环链表的实现 1.单向循环链表...

  • 2019-12-04 Java-LinkedList源码解读

    @TOC 1、链表数据结构 链表分为单向链表和双向链表,他们的区别在于,单向链表只能单向寻址,而双向链表可以双向寻...

  • 循环链表

    1、单向循环链表 当单向循环链表只有一个元素的情况时,链表的结构如下 从单向循环链表的结构看来,只要不是在链表的头...

  • 线性表-单向循环链表

    为了方便,本文介绍的单向循环链表不包含头节点 单向循环链表内容 单向循环链表的的定义 单向循环链表的创建 单向循环...

  • 数据结构与算法-单向循环链表

    单向循环链表 在单向链表的基础上令表尾节点的指针指向链表的第一个节点(首元结点),构成循环链表。其特点是可以从表中...

网友评论

      本文标题:第五章:面向对象基础——单向链表(1)。

      本文链接:https://www.haomeiwen.com/subject/xuokuxtx.html