给定一个链表,判断该链表是否为回文结构。回文是指该字符串正序逆序完全一致。如当输入链表 {1,2,3,2,1} 时,断定是回文结构,输出True。
代码实现
C语言代码:
boolisPail(structListNode*head){ //writecodehere if(head==NULL||head->next==NULL) returntrue; //第一步:定义快慢指针,并将其指向头结点 structListNode*slow,*fast; slow=head; fast=head; //第二步:快指针每次走两步,慢指针走一步 while(fast!=NULL&&fast->next!=NULL){ fast=fast->next->next; slow=slow->next; } //第三步:快指针指向慢指针后继结点,慢指针断链 fast=slow->next; slow->next=NULL; structListNode*p; p=NULL; //第四步:反转后半部分的链表 while(fast!=NULL){ p=fast->next; fast->next=slow; slow=fast; fast=p; } //第五步:将快指针指向原始链表头部,将快慢指针结点的值进行对比 fast=head; while(fast!=NULL&&slow!=NULL){ if(fast->val!=slow->val) returnfalse; fast=fast->next; slow=slow->next; } returntrue; }
图解代码
第一步:定义快慢指针,并将其指向头结点
第二步:快指针每次走两步,慢指针走一步
第三步:快指针指向慢指针后继结点,慢指针断链
第四步:反转后半部分的链表
第五步:将快指针指向原始链表头部,将快慢指针结点的值进行对比
审核编辑:汤梓红
分享、在看与点赞
只要你点,我们就是胖友
原文标题:数据结构:判断链表回文结构
文章出处:【微信公众号:嵌入式攻城狮】欢迎添加关注!文章转载请注明出处。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
C语言
+关注
关注
180文章
7604浏览量
136692 -
代码
+关注
关注
30文章
4779浏览量
68524 -
数据结构
+关注
关注
3文章
573浏览量
40123 -
链表
+关注
关注
0文章
80浏览量
10558
原文标题:数据结构:判断链表回文结构
文章出处:【微信号:嵌入式攻城狮,微信公众号:嵌入式攻城狮】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
数据结构中最简单的链表
数据结构作为嵌入式工程师必修课程之一,今天,我们就来讲一讲数据结构中最简单的链表,包含链表的初始化、插入和遍历操作。 链表在项目开发中使用的
发表于 06-13 17:40
•367次阅读
Linux Kernel数据结构:链表
Linux Kernel数据结构:链表原创 2016年10月20日 22:58:25标签:LINUX/kernel/链表 数据结构数据结构中
发表于 09-25 16:41
数据结构是什么_数据结构有什么用
数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高
发表于 11-17 14:45
•1.6w次阅读
什么是数据结构?为什么要学习数据结构?数据结构的应用实例分析
本文档的主要内容详细介绍的是什么是数据结构?为什么要学习数据结构?数据结构的应用实例分析包括了:数据结构在串口通信当中的应用,数据结构在按键
发表于 09-26 15:45
•14次下载
区块链的基本数据结构解析
区块链是一种分散式结构的系统,其中链表充当事务块的基本数据结构。关于哪些事务块应该附加到它的决策是由共识算法决定的。有时,选择基本数据结构比选择特定的共识算法对速度、吞吐量、可伸缩性和
发表于 01-03 14:49
•7509次阅读
你知道Linux内核数据结构中双向链表的作用?
Linux 内核提供一套双向链表的实现,你可以在 include/linux/list.h 中找到。我们以双向链表着手开始介绍 Linux 内核中的数据结构 ,因为这个是在 Linux 内核中使用最为广泛的
发表于 05-14 17:27
•1876次阅读
什么是栈?数据结构中栈如何实现
今天放松一下,我们来看看数据结构中的栈,这节的知识点可以说是数据结构中最容易上手的知识点了,其实比起链表,其实链表也有栈和队列的模型,链表的
发表于 04-29 18:25
•0次下载
评论