链表的回文结构,链表是一个什么结构
BM13判断一个链表是否是回文结构。
知识点链表双指针
给定一个链表,请判断这个链表是否是回文结构。回文是指字符串在正反顺序上完全一致。数据范围:链表中的节点数,链表中每个节点的值满足
示例1输入:
{1}复制返回值:
准确的副本
2示例输入:
{2,1}复制返回值:
虚假复印说明:
2- 1示例3输入:
{1,2,2,1}复制返回值:
真实副本描述:
1- 2- 2- 1
解决方案想法:
如果把链表换成数组,判断数组是不是回文就简单了。另外,如果我们能找到链表的中间节点,然后把后面的所有节点都倒过来,那么如果两个链表从链表的开头到结尾,直到相遇,其值都相等,那么也是一个回文。相应地,有以下方法:
1.用数组存储所有节点,然后用数组回文判断链表是否回文。2.在stack的帮助下,将所有节点依次放入链表,然后将所有节点取出,依次与链表进行比较。3.反转链表,然后比较两个节点的所有值是否相等。4.找到中间节点,然后反转后面节点,再从第一个节点和中间节点判断所有值是否相等。以下是用array实现的:
#包含位/标准数据。h
结构列表节点
{
int val
struct ListNode * next
ListNode(int x) : val(x),next(nullptr)
{
}
ListNode()=默认值;
};
bool isPail(ListNode *head)
{
STD:vector ListNode * v;
自动节点=头;
while(节点!=nullptr)
{
v.push_back(节点);
node=node-next;
}
for(int I=0;I v . size()/2;我)
{
if (v[i]- val!=v[v.size() - 1 - i]- val)
{
返回false
}
}
返回true
}
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。