链式前向星(支持删边)

今天刷到一个链式前向星的plus版,记个笔记
普通的链式前向星

struct EDGE {
	int to,next,w;
} edge[30000];
void addedge(int u,int v,int w){
	edge[cnt].to=v;
	edge[cnt].next=head[u];
	edge[cnt].w=w;
	head[u]=cnt++;
}
for(int i=head[u];i!=-1;i=edge[i].next)

普通版本的前向星不支持删边操作,下面这个版本支持,但是要维护的东西更多,类似于双向链表实现栈

struct EDGE{
	int fr, to, top, bot;
	int w;
} edge[30000];
int cnt;
int head[20000];//可以理解为栈顶
void addedge(int u, int v, int w) {
	edge[++cnt].fr = u;
	edge[cnt].to = v;
	edge[cnt].top = 0;
	edge[cnt].w = w;
	edge[head[u]].top = cnt;
	edge[cnt].bot = head[u];
	head[u] = cnt;
}
void delete_edge(int now) {
	int up = edge[now].top, down = edge[now].bot;
	if (up == 0) head[edge[now].fr] = down;
	else edge[up].bot = down;
	if (down > 0) edge[down].top = up;
}
for (int j = head[u]; j != -1; j = edge[j].bot)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值