234.回文链表
发布日期:2025-06-19 06:48:37 浏览次数:4 分类:精选文章

本文共 775 字,大约阅读时间需要 2 分钟。

判断一个单链表是否为回文链表的方法是,将链表中的所有节点值存储到一个数组中,然后从数组的两端同时向中间移动,逐步比较对应节点的值是否相等。如果全部相等,则为回文链表。

步骤如下:

  • 初始化数组:创建一个足够大的数组来存储链表节点的值。
  • 遍历链表:从链表的头节点开始,逐个将节点的值存入数组。
  • 双指针比较:设置两个指针,一个从数组开头,另一个从末尾,向中间移动,比较对应位置的值。
  • 返回结果:若所有对应值相等,返回true;否则,返回false。
  • 代码示例:

    bool isPalindrome(struct ListNode* head) {    int n = 0;    struct ListNode* current = head;    // 计算链表长度    while (current != NULL) {        n++;        current = current->next;    }    int arr[n];    current = head;    for (int i = 0; i < n; i++) {        arr[i] = current->val;        current = current->next;    }    int left = 0, right = n - 1;    while (left < right) {        if (arr[left] != arr[right]) {            return false;        }        left++;        right--;    }    return true;}

    注意事项:该方法假设链表不为空。对于空链表,通常返回true。对于单节点链表,返回true。

    上一篇:24Exchange Server 2010跨站点部署-公网发布443&25端口
    下一篇:8.12 矢量图层面要素单一符号使用十一(箭头线渲染边界)

    发表评论

    最新留言

    路过,博主的博客真漂亮。。
    [***.116.15.85]2026年06月10日 09时11分04秒

    关于作者

        喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
    -- 愿君每日到此一游!

    推荐文章