0%

数据结构(数组模拟)

链表(数组实现)

实现一个单链表,初始化为空,支持头插,删除,插入

e[N]数组储存值(类型自定,可以有多个)ne[N]储存下一个值的下标 head头节点

idx 数组大小同时每次++相当于开辟新空间然而没有。

初始化 (数组 0-n-1)

1
2
3
4
5
void init()
{
head = -1;
    idx = 0;//也可以为1 下面的操作都是以idx初始值为0进行
}

插入操作(将x插入到下标为k(第k+1个数)的后面)

1
2
3
4
5
6
7
void add(int k,int x)
{
e[idx] = x;//插入x
    ne[idx] = ne[k];//idx下一个为原e[k]的下一个
    ne[k] = idx;//e[k]的下一个元素为x 通过ne[k]连接
    idx++;//类似开空间(其实已经开好)
}

删除操作(1->2->3删除2就是1->3 ,2b并没有删除)

1
2
3
4
5
void remove(int k)
{
ne[k] = ne[ne[k]];
head = ne[head]//删除头节点
}

遍历

1
2
for(int i = head;i!=-1;i= ne[i])
cout<<e[i]<<" ";
-------------本文结束感谢您的阅读-------------

欢迎关注我的其它发布渠道