C语言每日一题(48)回文链表

力扣 234 回文链表

题目描述

给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false

示例 1:

复制代码
输入:head = [1,2,2,1]
输出:true

示例 2:

复制代码
输入:head = [1,2]
输出:false

提示:

  • 链表中节点数目在范围[1, 105]
  • 0 <= Node.val <= 9

思路分析

之前有写过,但那时还没有学习栈,只能通过逆置链表来进行操作,现在对栈有了一些了解后,可以更加方便的进行操作了。

这里我们利用一个数组来代替栈进行操作,非常简单,将链表的所有数据入栈,然后再遍历一次链表,每次将当前节点与栈顶元素比较,如果一一相等,说明满足回文结构。

复制代码
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
bool isPalindrome(struct ListNode* head) {
    int stack[100000]={0};
    int top=0;
    struct ListNode* cur=head;
    while(cur)
    {
        stack[top++]=cur->val;
        cur=cur->next;
    } 
    cur=head;
    while(cur)
    {
        if(cur->val!=stack[top-1])
        {
            return false;
        }
        cur=cur->next;
        top--;
    }
    return true;
}
相关推荐
star learning white5 小时前
xm C语言12
服务器·c语言·前端
CoderCodingNo5 小时前
【GESP】C++一级真题 luogu-B4410 [GESP202509 一级] 金字塔
开发语言·c++
超级大福宝5 小时前
C++中1 << 31 - 1相当于INT_MAX吗?
c语言·c++
芯联智造5 小时前
【stm32简单外设篇】- 高灵敏麦克风传感器模块 KY-037
c语言·stm32·单片机·嵌入式硬件
free-elcmacom5 小时前
Python实战项目<2>使用Graphviz绘制流程框图
开发语言·python·graphviz
ljuncong6 小时前
python的装饰器怎么使用
开发语言·python
2501_944875516 小时前
Go后端工程师
开发语言·后端·golang
foundbug9996 小时前
Modbus协议C语言实现(易于移植版本)
java·c语言·前端
听风吟丶6 小时前
Java 反射机制深度解析:从原理到实战应用与性能优化
java·开发语言·性能优化
chen_note6 小时前
Python面向对象、并发编程、网络编程
开发语言·python·网络编程·面向对象·并发编程