// head存储链表头,e[]存储节点的值,ne[]存储节点的next指针,idx表示当前用到了哪个节点
int head, e[N], ne[N], idx;
// 初始化
void init()
{
head = -1;
idx = 0;
}
// 在链表头插入一个数a
void insert(int a)
{
e[idx] = a, ne[idx] = head, head = idx ++ ;
}
// 将头结点删除,需要保证头结点存在
void remove()
{
head = ne[head];
}
head表示链表的头指针,e[]
数组存储节点的值,ne[]
数组存储节点的next
指针,idx
表示当前用到了哪个节点。
具体来说,init()
函数用于初始化链表,将head
赋值为-1
表示链表为空,idx
赋值为0
表示还没有使用过任何一个节点。
insert()
函数用于在链表头插入一个数a
。首先将a
存储到e[idx]
中,并将该节点的next指针指向原来的头结点head
。然后更新head
为新插入的节点idx
,最后将idx++
。
remove()
函数用于删除头结点。由于是单链表,需要保证头结点存在才能进行删除操作。首先将head
指向原来头结点的下一个节点ne[head]
,即删除了原来的头结点;然后可以通过重新调整后续节点之间的next
指针来实现完全删除该节点。