2、单向链表

单向链表

定义:链表是一种递归的结构,它是指向下一条链表的引用,它指向的下一条链表可能为空。

一般链表由n(n>=0)个结点相连结而成,能够形象的表示以下:

而对于结点来讲, 它也是一种数据结构,它包含一个指针域和一个数据域,它的数据域保存它须要保存的数据,指针域保存的是它所指向的下一个结点的引用。
结点类能够定义以下:

链表LinkedList中定义两个私有属性,分别是Node head,int size,其构造方法以下数据结构

这里为何定义一个空数据域的头结点呢?咱们先考虑一下若是链表没有这个头结点的时候咱们添加新的结点须要怎样去实现。此时须要分为两种状况:
第一种,添加结点的位置是链表的头部,此时直接新建立一个结点,并让其指针域保存以前链表的引用便可。
第二种,添加结点的位置不在链表的头部,此时须要找到待添加结点位置的前一个结点prev,让新建立结点的指针域保存prev.next的引用,并且还须要更新prev的指针域为新建立的结点。
而若是咱们增长了一个空数据域的头结点,对于任何位置插入结点咱们都不要额外考虑,由于全部的情形都是上述的第二种状况,简化了代码的书写。添加结点的方法以下:

考虑完增长结点,下一步就是考虑删除结点了,删除结点的思路也很简单,就是找到待删除结点的前一个结点prev,让prev.next = prev.next.next便可,即让prev的下一个结点变为待删除结点的下一个结点。
下面是找到指定位置的结点的方法3d

删除结点的方法:

相关文章
相关标签/搜索