博客
关于我
234.回文链表
阅读量:798 次
发布时间:2023-04-16

本文共 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。

    转载地址:http://wfgfk.baihongyu.com/

    你可能感兴趣的文章
    oracle 定义双重循环例子
    查看>>
    ORACLE 客户端工具连接oracle 12504
    查看>>
    Oracle 客户端连接时报ORA-01019错误总结
    查看>>
    oracle 嵌套表 例子,Oracle之嵌套表(了解)
    查看>>
    Oracle 常用命令
    查看>>
    Oracle 序列sequence 开始于某个值(10)执行完nextval 发现查出的值比10还小的解释
    查看>>
    Oracle 拆分以逗号分隔的字符串为多行数据
    查看>>
    Oracle 排序中使用nulls first 或者nulls last 语法
    查看>>
    oracle 插入date日期类型的数据、插入从表中查出的数据,使用表中的默认数据
    查看>>
    oracle 数据库dg搭建规范1
    查看>>
    oracle 时间函数
    查看>>
    oracle 时间转化函数及常见函数 .
    查看>>
    Oracle 权限(grant、revoke)
    查看>>
    oracle 查询clob
    查看>>
    Oracle 比较 B-tree 和 Bitmap 索引
    查看>>
    UML- 组件图(构件图)
    查看>>
    oracle 用户与锁
    查看>>
    oracle 由32位迁移到64位的问题
    查看>>
    oracle 监听器的工作原理
    查看>>
    oracle 行列转换
    查看>>