数组模拟链表和邻接表
作者:
littleboyh
,
2021-09-23 19:46:17
,
所有人可见
,
阅读 383
数组模拟单链表
// head 存储头结点的下标
// e[i] 存储结点i的值
// ne[i] 存储结点i的下一个结点的下标
// idx 存储当前可用的结点的下标
int e[N], ne[N], idx, head;
//初始化
head = -1;
//插入一个结点
void add(int x)
{
e[idx] = x, ne[idx] = head, head = idx ++ ;
}
//删除头结点
void delete()
{
head = ne[head];
}
//遍历单链表
for(int i = head; i != -1; i = ne[i])
cout << e[i] << ' ';
数组模拟邻接表
// head[i] 存储第i个结点的头结点的下标
// e[i] 存储结点i的值
// ne[i] 存储结点i的下一个结点的下标
// idx 存储当前可用的结点的下标
int head[N], e[N], ne[N], idx;
//初始化
memset(h, -1, sizeof h);
//插入一条有向边 a --> b
void add(int a, int b)
{
e[idx] = b, ne[idx] = h[a], h[a] = idx ++ ;
}
//遍历顶点a指向的顶点的值
for(int i = head[a]; i != -1; i = ne[i])
cout << e[i] << ' ';