前言:了解单链表的算法思想,其中包括常考内容,再单链表中插入,删除一个结点.
<以数组模拟为主,大多数教科书以指针模拟为主>
1.单链表的初始化
定义 head头结点,
idx表示从这一点开始存储,
e[idx]表示该点存储的数据,
ne[idx]是指向下一个结点的下标.
#include<iostream>
using namespace std;
const int N=100010;
int head,e[N],ne[N],idx;
void init()
{
int head=-1;
int idx=0;//数组下标从0开始
}
2.头插法插入数据
void add_head(int x)
{
e[idx]=x;
ne[idx]=head;
head=idx;
idx++;
}
3.在单链表的第K个位置插入一个数据
void add(int k,int x)
{
e[idx]=x;
ne[idx]=ne[k];
ne[k]=idx;
idx++;
}
4.在单链表中删除一个结点.
void remove(int k)
{
ne[k]=ne[ne[k]];
}