栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言判断带头结点双链表是否对称

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言判断带头结点双链表是否对称

算法思想:
双指针从头尾相向遍历,指向元素相同继续遍历,不同返回false,直到遍历到中点,链表长度有奇偶,所以循环跳出条件不同。如果链表长度为奇数的话,跳出条件很好想就是p!=q,如果是偶数的话,其实也不难理解。如果写成p-next!=q 的话,此时跳出循环,q和q所指元素就无法比较。正确的条件是q->next!=p,即p q第一次背靠背。图解如下:

代码如下:

bool Symmetry(DlinkList L) {//判断带头结点双链表是否对称
    DNode *p=L->next, *q=L->prior;
    while (p!=q&&q->next!=p){
        if(p->data!=q->data)
            return false;
        p=p->next;
        q=q->prior;
    }
    return true;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/698302.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号