判断循环双链表是否对称
设计一个算法用于判断带头节点的循环双链表是否对称
算法思想
让left从左向右扫描,right从右向左扫描,直到它们指向同一个节点:left == right
或相邻left->next == right,或right->prev == left,为止
若它们所指节点值相同,则继续下去,否则返回false,若比较全部相等,则返回true
![![[Pasted image 20241111143209.png]]](https://i-blog.csdnimg.cn/direct/055f1c89f5e1453ca3c61098c2b299ed.png)
当节点个数是奇数
![![[Pasted image 20241111143238.png]]](https://i-blog.csdnimg.cn/direct/41d1a588c791416ab1f6ce0c9043bd08.png)
直到left == right时,循环结束
![![[Pasted image 20241111143329.png]]](https://i-blog.csdnimg.cn/direct/911efc60eae54148a386f6dd42651a5c.png)
当节点个数是偶数
![![[Pasted image 20241111143359.png]]](https://i-blog.csdnimg.cn/direct/feff7ad7332a4b0d958f444214ae7193.png)
直到发生交错后,right的next指向left,循环结束
bool Symmetry(DLinkList &L)
{
// 初始化左右指针,指向链表的首尾节点
DNode* left = L->next, *right = L->prev;
// 当

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



