单链表的实现

一、单链表的概念

      链表是最基本的数据结构,其存储的你原理图如下图所示

          单链表的实现

      上面展示的是一个单链表的存储原理图,简单易懂,head为头节点,他不存放任何的数据,只是充当一个指向链表中真正存放数据的第一个节点的作用,而每个节点中都有一个next引用,指向下一个节点,就这样一节一节往下面记录,直到最后一个节点,其中的next指向null。

      链表有很多种,比如单链表,双链表等等。我们就对单链表进行学习,其他的懂了原理其实是一样的。

 

二、用java实现单链表

      语言只是一种工具,数据结构真正体会的是那种思想,这句话确实是这样,不管用什么写,其思想是不改变的。以前使用的是C++,现在用的是java,一步步来实现。

      2.1、编写一个Node类来充当结点的模型。我们知道,其中有两个属性,1存放数据的data,2存放下一结点的引用,

          单链表的实现

单链表的实现 View Code

 

      2.2、单链表的简单操作(增加,删除,获取总长度,链表元素排序,链表遍历)  

            单链表的实现

         2.2.1、增加结点操作,addNode(Node)

            单链表的实现 

           想法:    一开始也会想如果什么结点也没有。是不是需要判断插入的是第一个结点的问题,但写完后发现没有必要,是不是第一个结点操作都是一样的,所以通过移动的指针遍历整个链表,找到最后一个结点,往后添加即可。没难度。      

单链表的实现 View Code

         2.2.2、插入结点到链表的指定位置。 insertNodeByIndex(int index,Node node)

             单链表的实现 

            注意:要知道插入操作需要的前提是什么,你才好写代码,写完之后,考虑如果在特殊位置上插入,是否也一样。还有需要进行插入位置是否可行的判断。

单链表的实现 View Code

 

         2.2.3、删除指定位置上的结点  delNodeByIndex(int index)

              单链表的实现