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;
}
相关推荐
终是蝶衣梦晓楼36 分钟前
HiC-Pro Manual
java·开发语言·算法
前端_yu小白1 小时前
Vue2实现docx,xlsx,pptx预览
开发语言·javascript·ecmascript
Pocker_Spades_A1 小时前
从 0 到 1 开发图书管理系统:飞算 JavaAI 让技术落地更简单
java·开发语言·java开发·飞算javaai炫技赛
郝学胜-神的一滴1 小时前
对于类似std::shared_ptr但有可能空悬的指针使用std::weak_ptr: Effective Modern C++ 条款20
开发语言·c++·程序人生·系统架构
linux修理工2 小时前
使用 SecureCRT 连接华为 eNSP 模拟器的方法
服务器·开发语言·php
若水晴空初如梦2 小时前
QT聊天项目DAY17
开发语言·qt
Murphy_lx2 小时前
C++ stdset 与 stdmultiset 深度比较
开发语言·c++
LZQqqqqo2 小时前
C# 事件Event
开发语言·c#
焊锡与代码齐飞2 小时前
嵌入式第十八课!!数据结构篇入门及单向链表
c语言·数据结构·学习·算法·链表·排序算法
样子20183 小时前
PHP 之使用HTMLPurifier过滤XSS
开发语言·前端·php·xss