16.使用数组实现链表

本文探讨了如何使用数组来模拟链表结构,包括单链表和双链表。通过一个数组存储值,另一个数组存储索引来实现链表的next关系。对于单链表,定义头节点为-1,初始化indx为0,关键操作有添加到头部、插入元素和删除元素。双链表则增加了左右连接的存储,并同样支持添加和删除操作。
摘要由CSDN通过智能技术生成

思想:

一个数组存放值,另一个数组存放的是索引。这样与正常链表结构中的val ,next 相对应。

定义一个indx ,表示的是插入元素的顺序(第几个插入的元素)。

单链表:

定义头节点为 -1,indx 为 0;

核心操作为 addToHead(), add(int k, int x), remove(int k)

addTohead:

public static void addToHead(int x) {
        e[inx] = x;
        ne[inx] = head;
        head = inx;
        inx++;
    }

add(int k, int ):

public static void add(int k, int x) {
        e[inx] = x;
        ne[inx] = ne[k];
        ne[k] = inx;
        inx++;
    }

remove(int k):

public static void remove(int k) {
        ne[k] = ne[ne[k]];
    }

注意:实现单链表是需要进行初始化,将head置为 -1, indx置为 0;

双链表:

定义e[N] 存放值,l [ N ] 存放左连接。r [ N ] 存放右连接。 indx与单链表一样。

核心操作为:add(int k, int x), remove(int k)

ad

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值