使用单向链表实现LinkedList

单向链表是指节点中的指针域只有一个,指针域只能沿着同一个方向移动的链表。Java.util包中提供了LinkedList,此LinkedList是基于双向链表实现的。本文基于单向链表实现LinkedList中的某些方法,主要是学习使用下单向链表这种数据结构。
首先给出节点类,节点类中包含数据域value,和指针域next,以及三个构造函数。

class Entry {
          E value;//数据域
          Entry next;//指针域
          Entry() {}
          Entry (E value){
              this.value = value;
          }
          Entry (E value, Entry next){
              this.value = value;
              this.next = next;
          }

}

为了方便处理链表中的插入,删除和查找操作,在链表的开始结点之前,增加一个head节点,此head节点指向开始结点。这样好处为:

  1. 开始结点的地址存放在了head节点中,这样开始结点的操作和其他节点的操作一样,无需特殊处理。
  2. 不论链表是否为空,其头结点的指针是指向开始节点的非空节点(只不过空链表时,头结点的指针域next为null)。空链表的处理和非空链表一样了。
我们将LinkedList类实现java.util.List<E>接口,尽可能的实现java.util.List<E>中的方法。实现的java.util.List<E>接口方法如下

返回值 方法 说明
boolean add(E e) 将特定元素e添加到List中
void   add(int index, E element) 在索引index处添加给定的元素
boolean addAll(Colleaction<? extends E> c) 将集合c中的元素全部加入List中
boolean addAll(intindex, Collection<?extendsE> c) 在给定位置,添加集合c中的元素
int size() 返回链表中的元素个数
E get(int index) 获取下标为index的元素
boolean isEmpty() List为空时,返回true
boolean remove(Object o) 移除链表中第一个元素值为o的元素。
boolean removeAll(Collection<?> c) 从链表中移除c中所有的元素。
E remove(int index) 删除index处的元素
E set(int index, E element) 将index处的值设置为元素element。
int

indexOf(Object o)

返回元素o在链表中第一次出现的索引位置,未出现返回-1
boolean contains(Object o) 如果List中包含元素o则,返回true;否则false
boolean containsAll(Collection<?> c) List中是否包含集合c中的全部元素,是返回true,否则false
void
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值