C语言/数据结构——(链表的回文结构)

一.前言

今天在牛客网上刷到了一道链表题------链表的回文结构https://www.nowcoder.com/practice/d281619e4b3e4a60a2cc66ea32855bfa?,巧合的是它的解题思路恰好是我们一起分享过两道链表题的汇总。这两道题分别是反转链表和链表的中间节点。废话不多数,让我们直接进入今天的正文环节吧。

二.正文

1.1题目描述

1.2题目分析

对于这道题,我们的思路是先找到链表的中间节点,然后将中间节点及之后的链表进行逆置,这样就可以得到两个链表的头节点。并让这两个链表的元素依次比较大小,如果元素依次相同,则返回true,否者返回false。

就比如:1->2->2->1

对于反转链表和找到中间节点可以看我写的文章。下面是对应其链接:

反转链表:https://blog.csdn.net/yiqingaa/article/details/138376042?

查找中间节点:https://leetcode.cn/problems/middle-of-the-linked-list

1.3代码实现

cpp 复制代码
/*
struct ListNode {
    int val;
    struct ListNode *next;
    ListNode(int x) : val(x), next(NULL) {}
};*/
 typedef struct ListNode ListNode;
class PalindromeList {
public:
ListNode* middleNode(struct ListNode* head) 
{
    ListNode* slow;
    ListNode* fast;
    fast=slow=head;
    while((fast!=NULL)&&(fast->next!=NULL))
    {
        slow=slow->next;
        fast=fast->next->next;
    }
    return slow;
}
typedef struct ListNode ListNode;
ListNode* ReverseList( ListNode* head)
{
// if(head==NULL)
  //  return NULL;
    ListNode*pcur,*prev,*pnext;
    ListNode* phead=(ListNode*)malloc(sizeof(ListNode));
    phead->next=head;
    pcur=head;prev=phead;pnext=pcur->next;
    while(pcur!=NULL)
    {
        pcur->next=prev;
        prev=pcur;
        pcur=pnext;
        if(pnext!=NULL)
        pnext=pnext->next;
    }
    head->next=NULL;
    free(phead);
    phead=NULL;
    return prev;
}
    bool chkPalindrome(ListNode* A) {
        // write code here
ListNode* mid=middleNode(A);
ListNode* remid= ReverseList(mid);
while(remid&&A)
{
    if(A->val!=remid->val)
     return false;
     else
     {
        A=A->next;
        remid=remid->next;
     }

}
return true;
    } 
};

值得注意的是,以上代码是在牛客网上运行的。

三.结言

今天的题目就分享到这了,帅哥美女们,我们下次再见喽,拜拜~

相关推荐
Fanxt_Ja3 天前
【LeetCode】算法详解#15 ---环形链表II
数据结构·算法·leetcode·链表
侃侃_天下3 天前
最终的信号类
开发语言·c++·算法
echoarts3 天前
Rayon Rust中的数据并行库入门教程
开发语言·其他·算法·rust
Aomnitrix3 天前
知识管理新范式——cpolar+Wiki.js打造企业级分布式知识库
开发语言·javascript·分布式
每天回答3个问题3 天前
UE5C++编译遇到MSB3073
开发语言·c++·ue5
今后1233 天前
【数据结构】二叉树的概念
数据结构·二叉树
伍哥的传说3 天前
Vite Plugin PWA – 零配置构建现代渐进式Web应用
开发语言·前端·javascript·web app·pwa·service worker·workbox
小莞尔3 天前
【51单片机】【protues仿真】基于51单片机的篮球计时计分器系统
c语言·stm32·单片机·嵌入式硬件·51单片机
小莞尔3 天前
【51单片机】【protues仿真】 基于51单片机八路抢答器系统
c语言·开发语言·单片机·嵌入式硬件·51单片机
liujing102329293 天前
Day03_刷题niuke20250915
c语言