Java带头傀儡结点与不带头傀儡结点的双向单列表创建,附加部分面试题

本文主要介绍了在Java中如何创建带头和不带头傀儡结点的双向单链表,强调了学习链表需要通过画图、多练习来加深理解。文章提供了创建代码及测试案例。
摘要由CSDN通过智能技术生成

作为一名小白,在学习链表中遇到许许多多的困难,只要相信自己可以,多画图帮助自己思考理解,比别人多努力,多写几遍,总会熟练地掌握链表,没有解决不了的困难,只有不努力的人。

带头傀儡结点比较简单,下来先看一下创建代码和测试:

创建

class ListNode{
    public int val;
    public ListNode next;
    public ListNode prev;
    public ListNode (int val){
        this.val = val;
    }
}
public class DoubleList {
    public ListNode puppetHead;//带傀儡节点的头节点
    public ListNode last;
    public DoubleList(){
        this.puppetHead = new ListNode(-1);
    }
    //头插法
    public void addFirst (int data){
        ListNode node = new ListNode(data);
        if (this.puppetHead.next == null) {
            this.puppetHead.next = node;
            node.prev = this.puppetHead;
            this.last = node;
            return;
        }
        node.next = this.puppetHead.next;
        node.next.prev = node;
        this.puppetHead.next = node;
        node.prev = this.puppetHead;
    }
    //尾插法
    public void addLast (int data){
        ListNode node = new ListNode(data);
        if (this.last == null && this.puppetHead.next == null) {
            this.puppetHead.next = node;
            node.prev = this.puppetHead;
            this.last = node;
            return;
        }
        this.last.next = node;
        node.prev = this.last;
        this.last = node;
    }
    //任意位置插入
    public ListNode searchIndex (int index){
        ListNode cur = this.puppetHead.next;
        if (index < 0 && index > size()){
            return null;
        }
        while (index < 0){
            cur = cur.next;
            index--;
        }
        return cur;
    }
    public void addIndex (int index, int data){
        if (index == 0){
            addFirst(data);
            return;
        }
        if (index == size()) {
            addLast(data);
            return;
        }
        ListNode node = new ListNode(dat
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值