链表的回文结构

简介: 链表的回文结构

题目描述

题目链接:链表的回文结构_牛客题霸_牛客网 (nowcoder.com)

题目分析

我们的思路是:

  • 找到中间结点
  • 逆置后半段
  • 比对

我们可以简单画个图来表示一下:

奇数和偶数都是可以的

找中间结点

我们可以用快慢指针来找中:leetcode:链表的中间结点-CSDN博客

写一个找中的函数middleNode:

然后写一个逆置的函数reverseList:

我们画图表示一下头插的过程:

最后我们进行一个对比

代码示例

有了这个思路,我们就可以编写代码了:

/*
struct ListNode {
    int val;
    struct ListNode *next;
    ListNode(int x) : val(x), next(NULL) {}
};*/
class PalindromeList {
public:
    struct ListNode*reverseList(ListNode*head)
    {
        struct ListNode*cur=head;
        struct ListNode*newhead=NULL;
        while(cur)
        {
            struct ListNode*next=cur->next;
            //头插
            cur->next=newhead;
            newhead=cur;
            cur=next;
        }
        return newhead;
    }
    struct ListNode*middleNode(ListNode*head)
    {
        struct ListNode*slow,*fast;
        slow=fast=head;
        while(fast&&fast->next)
        {
            slow=slow->next;
            fast=fast->next->next;
        }
        return slow;
    }
    bool chkPalindrome(ListNode* head) {
        // write code here
        struct ListNode*mid=middleNode(head);
        struct ListNode*rhead=reverseList(mid);
        while(head&&rhead)
        {
            if(head->val!=rhead->val)
            {
                return false;
            }
            head=head->next;
            rhead=rhead->next;
        }
        return true;
    }
};

结果也就通过了:

相关文章
|
22天前
|
C++
数据结构01-线性结构-链表栈队列-栈篇
数据结构01-线性结构-链表栈队列-栈篇
LeetCode | 234. 回文链表
LeetCode | 234. 回文链表
|
8天前
题目----力扣--回文链表
题目----力扣--回文链表
16 0
|
10天前
|
索引
【力扣刷题】回文链表、环形链表、合并两个有序链表
【力扣刷题】回文链表、环形链表、合并两个有序链表
16 0
|
22天前
|
算法
【每日一题】牛客网——链表的回文结构
【每日一题】牛客网——链表的回文结构
|
22天前
|
存储 C语言
数据结构基础:双链表结构、实现
数据结构基础:双链表结构、实现
|
22天前
|
C语言 C++ 索引
【力扣】141. 环形链表、160. 相交链表、206.反转链表、234. 回文链表
【力扣】141. 环形链表、160. 相交链表、206.反转链表、234. 回文链表
|
22天前
|
存储 算法 C语言
【C/C++ 链表结构】探索链表迭代器:C++实现的深入分析与优化策略
【C/C++ 链表结构】探索链表迭代器:C++实现的深入分析与优化策略
50 0
|
22天前
|
算法
链表的回文结构
链表的回文结构
|
22天前
|
Java Go C++
Golang每日一练(leetDay0086) 回文链表、删除链表节点
Golang每日一练(leetDay0086) 回文链表、删除链表节点
24 0
Golang每日一练(leetDay0086) 回文链表、删除链表节点