java带头结点空单链表_java单链表-带头结点和不带头结点单链表的简单实现

单链表在插入和删除操作时,有无头结点的实现是有区别的,总的来说,带有头结点的单链表实现起来比较方便,而不带头结点的单链表在链首插入和删除时要特殊处理,以下代码是带有头结点的单链表的实现。 //类定义、模板类的定义 #ifndef IncludeHeadNodeChain_H

带头结点的单链表实现 public class LinkedList {

private Entry head, tail; //头指针,尾指针

private int size; //通过一个变量记录链表长度

public LinkedList() {

//生成一个头结点,让头指针和尾指针都指向它

head = tail = new Entry(null);

size = 0;

}

public int size() {

return size;

}

public boolean isEmpty() {

return head.next == null; //当头结点的next为空,表明整个链表为空

}

public T get(int index) {

return current(index).element;

}

public T set(int index, T element) {

Entry entry = current(index);

T oldVal = entry.element;

entry.element = element;

return oldVal;

}

//默认在原链表尾部添加新的结点

public boolean add(T element) {

Entry newEntry = new Entry(element);

tail.next = newEntry;//原链表尾指针的next指向新的结点

tail = newEntry;//尾指针向后移动一位,指向新的结点

size++;

return true;

}

public boolean add(int index, T element) {

//若索引值和链表长度一样,新结点添加到链表最后位置

if (index == size)

return add(element);

//得到索引index的前一个结点

Entry preEntry = previous(index);

//新结点的next为preEntry的next指向的结点

Entry newEntry = new Entry(element, preEntry.next);

//preEntry的next指向新的结点

preEntry.next = newE

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值