数组模拟单链表Java实现

        思路:head为头节点,数组e[]储存每个节点的值,ne[]储存每个节点指向的下一节点的索引(位置),idx为当前数组储存到了哪个位置。

        其次实现了插入、删除的功能。

package com.dzy;

public class LinkNode{
    final int N=100010;
    int head;
    int[] e=new int[N];//储存每个节点的元素值
    int[] ne=new int[N];//储存每个节点的下一节点的索引
    int idx;//储存当前数组e的储存位置(到哪一个节点)
    public void init(){
        head=-1;
        idx=0;
    }

    /**
     * 在链表的头节点插入元素
     * @param x 元素的值
     */
    public void add_to_head(int x){
        e[idx]=x;
        ne[idx]=head;
        head=idx;
        idx++;
    }

    /**
     * 讲x插入到下标为k的节点后
     * @param k 要插入的位置
     * @param x 要插入的元素值
     */
    public void add(int k,int x){
        e[idx]=x;
        ne[idx]=ne[k];
        ne[k]=idx;
        idx++;
    }

    /**
     * 将下标为k的节点删除
     * @param k 节点索引
     */
    public void remove(int k){
        ne[k]=ne[ne[k]];
    }

    /**
     * 删除头节点
     */
    public void remove_head(){
        head=ne[head];
    }
}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值