数据结构--双向链表的操作(增加和删除节点)

1)双向链表新增节点:

第一步:首先找到插入位置,节点 s 将插入到节点 p 之前 
第二步:将节点 s 的前驱指向节点 p 的前驱,即 s->prior = p->prior; 
第三步:将节点 p 的前驱的后继指向节点 s 即 p->prior->next = s; 
第四步:将节点 s 的后继指向节点 p 即 s->next = p; 
第五步:将节点 p 的前驱指向节点 s 即 p->prior = s;

void insertNode(){
	struct node{
		int x;
		node *prior;
		node *next;
	};
	
	node *s;
	node *p; 
	//插入节点 
	s->prior = p->prior;
	p->prior->next = s;
	s->next = p;
	p->prior = s;
}

2)双向链表删除节点:

第一步:找到即将被删除的节点 p 
第二步:将 p 的前驱的后继指向 p 的后继,即 p->prior->next = p->next; 
第三步:将 p 的后继的前驱指向 p 的前驱,即 p->next->prior = p->prior; 
第四步:删除节点 p 即 delete p;
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值