单链表的数组实现

用数组来实现单链表,并支持链表的各种操作,能在OJ测试中获得更快的速度(理解记忆很easy)。


实现一个单链表,链表初始为空,支持三种操作:

(1) 链表头插入一个数;

(2) 删除第k个插入数的后面的数;

(3) 在第k个插入的数后插入一个数


 代码实现:

复制代码
#include <iostream>
using namespace std;
const int N = 100010; 
// head 表示头结点的下标
// e[i] 表示节点i的值
// ne[i] 表示节点i的next指针是多少
// idx 存储当前已经用到了哪个点
int e[N], ne[N], head, idx;

// 初始化
int init () {
    head = -1;
    idx = 0;
}

// 将x插到头结点(头插法)
int add (int x) {
    e[idx] = x;
    ne[idx] = head;
    head = idx++;
}

// 将下标是k的点后面的点删掉
int remove (int k) {
    ne[k] = ne[ne[k]];
}

// 将x插到下标是k的点后面
int add_k (int k, int x) {
    e[idx] = x;
    ne[idx] = ne[k];
    ne[k] = idx++;
}
复制代码

 

posted @   !&&||  阅读(61)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示