当前位置:网站首页>[C题目]力扣234. 回文链表
[C题目]力扣234. 回文链表
2022-08-02 20:33:00 【GLC8866】
思路:
struct ListNode* MiddleNode(struct ListNode* head)
{
struct ListNode* slow=head;
struct ListNode* fast=head;
while(fast&&fast->next)//防止结点为奇数个时,fast->next先为NULL,fast应该写在fast->next的左边。
{
fast=fast->next->next;
slow=slow->next;
}
return slow;
}
struct ListNode* reverseList(struct ListNode* head)
{
//创建哨兵位的头结点
struct ListNode* newhead=(struct ListNode*)malloc(sizeof(struct ListNode));
newhead->next=NULL;//看作指向NULL结点
struct ListNode* cur=head;
while(cur)
{
struct ListNode* tmp=cur->next;
cur->next=newhead->next;
newhead->next=cur;
cur=tmp;
}
return newhead->next;
}
bool isPalindrome(struct ListNode* head)
{
struct ListNode* middle=MiddleNode(head);
struct ListNode* newhead=reverseList(middle);
struct ListNode* cur1=head;
struct ListNode* cur2=newhead;
while(cur2)//奇数个结点时,虽然后半段节点数比前半段结点数多一个,但当cur2指向middle时,cur1也存着middle的地址(指针域并没有被覆盖),所以cur2->val依然等于cur1->val,不影响判断两个链表是否相等。
{
if(cur2->val!=cur1->val)
return false;
cur1=cur1->next;
cur2=cur2->next;
}
return true;
}
边栏推荐
猜你喜欢
随机推荐
Which thread pool does Async use?
KDD 2022 | 深度图神经网络中的特征过相关:一个新视角
奥特学园ROS笔记--7(289-325节)
callback prototype __proto__
供电系统电气图
信息学奥赛一本通(1259:【例9.3】求最长不下降序列)
go——内存分配机制
网上那么多教人赚钱的方法,但是你实际上是靠什么赚钱的呢?
基本语法(三)
传感器工作原理
Use the TCP protocol, we won't lost package?
C# Barrier类
OP analysis and design
千人优学 | GBase 8s数据库2022年6月大学生专场实训圆满结束
Axure9的元件用法
php 单引号 双引号 -> => return echo
你是几星测试/开发程序员?技术型选手王大拿......
力扣每日一题-第46天-344. 反转字符串
pytorch的tensor创建和操作记录
Xcode13.1运行工程报错fatal error: ‘IFlyMSC/IFly.h‘ file not found的问题