请判断一个链表是否为回文链表。 链表长度不超过100。
区块链毕设网qklbishe.com为您提供问题的解答
请判断一个链表是否为回文链表。
链表长度不超过100。
typedef struct ListNode Node; class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 判断是否为回文链表 * @param head ListNode类 链表头 * @return bool布尔型 */ bool isPalindrome(ListNode* head) { if(head==NULL||head->next==NULL) { return true; } Node*slow=head;//慢指针 Node*fast=head;//快指针 //查找一个中间结点,将链表在中间结点后逆置,最后将逆置的 //的首地址赋值给fast,再将head的地址赋值给slow, //一个从中间往后遍历,一个从头往后遍历,不相等就返回 Node*cur=head;//记录前面的地址 Node*p1=NULL; Node*p2=NULL; Node*p3=NULL; while(fast&&fast->next)//记录中间结点 { cur=slow; slow=slow->next; fast=fast->next->next; } cur->next=NULL;//将前一部分的最后一个地址的next置为空指针,防止死循环 p1=NULL; p2=slow; p3=slow->next; while(p2)//逆置链表 { p2->next=p1;//把p1的地址给p2的next使p2可以指向p1 p1=p2;// p2=p3; if(p3) p3=p3->next; } slow=head; while(slow)//进行比较 { if(slow->val!=p1->val)//不相等直接退出 { return false; } slow=slow->next;//将下一个结点的地址赋值给slow p1=p1->next;//同上 } return true; // write code here } };
19:11
以上就是关于问题请判断一个链表是否为回文链表。 链表长度不超过100。的答案
欢迎关注区块链毕设网-
专业区块链毕业设计成品源码,定制。
区块链NFT链游项目方科学家脚本开发培训