void invert(DuLinkList*&L)
{
DuLinkList* p = L->next;
DuLinkList* q;
L->next = NULL;
while (p != NULL)
{
q = p->next;
p->next = L->next;
p->prior = q;
L->next = p;
p = q;
}
}
逆置算法看不太懂,谁能解析一下?(越详细越好)
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- qzjhjxj 2022-05-25 11:48关注
供参考:
//带头结点的双向链表的就地逆置 void invert(DuLinkList*& L) { DuLinkList* q; DuLinkList* p = L->next; // 将 p 指向链表 L 的第一个结点,同时将头结点L从链表中脱离 L->next = NULL; // 成一个独立的结点 while (p != NULL) // 此时 p 指向链表的第一个结点 { q = p->next; // q 指向链表的第二个结点,即 p结点的下一个结点 p->next = L->next; //头插法将第一个结点 p 链入头结点 L p->prior = q; //将 p 结点前驱指针修改为指向 第二个结点 q L->next = p; //头插法将第一个结点 p 链入头结点 L p = q; //上述动作完成后,让 p 指向第二个结点 q ,准备第二个结点的 逆置 } }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
- ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
- ¥20 有关区间dp的问题求解
- ¥15 多电路系统共用电源的串扰问题
- ¥15 slam rangenet++配置
- ¥15 有没有研究水声通信方面的帮我改俩matlab代码
- ¥15 ubuntu子系统密码忘记
- ¥15 保护模式-系统加载-段寄存器
- ¥15 电脑桌面设定一个区域禁止鼠标操作
- ¥15 求NPF226060磁芯的详细资料