0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

数据结构:判断链表回文结构

嵌入式攻城狮 来源:嵌入式攻城狮 2023-12-01 13:26 次阅读

给定一个链表,判断该链表是否为回文结构。回文是指该字符串正序逆序完全一致。如当输入链表 {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;
}

图解代码

第一步:定义快慢指针,并将其指向头结点

c788a09e-9004-11ee-939d-92fbcf53809c.png

第二步:快指针每次走两步,慢指针走一步

c791b094-9004-11ee-939d-92fbcf53809c.png

第三步:快指针指向慢指针后继结点,慢指针断链

c79ed04e-9004-11ee-939d-92fbcf53809c.png

第四步:反转后半部分的链表

c7b471a6-9004-11ee-939d-92fbcf53809c.png

第五步:将快指针指向原始链表头部,将快慢指针结点的值进行对比

c7d285ec-9004-11ee-939d-92fbcf53809c.png

审核编辑:汤梓红

分享、在看与点赞

只要你点,我们就是胖友

c85fa0bc-9004-11ee-939d-92fbcf53809c.gif

原文标题:数据结构:判断链表回文结构

文章出处:【微信公众号:嵌入式攻城狮】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 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

    常见的数据结构

    的,那样对于数据的使用简直是个悲剧。针对此类数据数据结构提供了图存储结构,专门用于存储这类数据。二、
    发表于 05-10 07:58

    数据结构链表的基本操作

    嵌入式学习基础-数据结构链表的基本操作链表节点采用结构体的方式进行定义,下面是最基础的定义只有一个数据data,*pNext用于指向下一个节
    发表于 12-22 08:05

    Linux内核中的数据结构的一点认识

    成员,那么到时候链表中没有任何数据,这样的链表有什么用呢?其实这就是内核链表设计的巧妙之处,因为在整个内核中需要使用链表来存放的
    发表于 04-20 16:42

    stm32的8位数据结构怎么判断正负?

    stm32的8位数据结构怎么判断正负,char变量不能为负,不想用int,我记得51单片机char可以判断正负
    发表于 09-22 07:15

    算法与数据结构——双向链表

    第三章为算法与数据结构,本文为3.3 双向链表
    的头像 发表于 09-19 17:56 7291次阅读
    算法与<b class='flag-5'>数据结构</b>——双向<b class='flag-5'>链表</b>

    数据结构是什么_数据结构有什么用

    数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高
    发表于 11-17 14:45 1.6w次阅读
    <b class='flag-5'>数据结构</b>是什么_<b class='flag-5'>数据结构</b>有什么用

    java数据结构学习

    数据结构是对计算机内存中的数据的一种安排,数据结构包括 数组, 链表, 栈, 二叉树, 哈希表等,算法则对对这些结构中的
    发表于 11-29 09:46 782次阅读

    什么是数据结构?为什么要学习数据结构数据结构的应用实例分析

    本文档的主要内容详细介绍的是什么是数据结构?为什么要学习数据结构数据结构的应用实例分析包括了:数据结构在串口通信当中的应用,数据结构在按键
    发表于 09-26 15:45 14次下载
    什么是<b class='flag-5'>数据结构</b>?为什么要学习<b class='flag-5'>数据结构</b>?<b class='flag-5'>数据结构</b>的应用实例分析

    区块链的基本数据结构解析

    区块链是一种分散式结构的系统,其中链表充当事务块的基本数据结构。关于哪些事务块应该附加到它的决策是由共识算法决定的。有时,选择基本数据结构比选择特定的共识算法对速度、吞吐量、可伸缩性和
    发表于 01-03 14:49 7509次阅读

    你知道Linux内核数据结构中双向链表的作用?

    Linux 内核提供一套双向链表的实现,你可以在 include/linux/list.h 中找到。我们以双向链表着手开始介绍 Linux 内核中的数据结构 ,因为这个是在 Linux 内核中使用最为广泛的
    发表于 05-14 17:27 1876次阅读

    什么是栈?数据结构中栈如何实现

    今天放松一下,我们来看看数据结构中的栈,这节的知识点可以说是数据结构中最容易上手的知识点了,其实比起链表,其实链表也有栈和队列的模型,链表
    发表于 04-29 18:25 0次下载
    什么是栈?<b class='flag-5'>数据结构</b>中栈如何实现

    Linux内核的链表数据结构

    Linux内核实现了自己的链表数据结构,它的设计与传统的方式不同,非常巧妙也很通用。
    的头像 发表于 03-24 11:34 832次阅读
    Linux内核的<b class='flag-5'>链表</b><b class='flag-5'>数据结构</b>

    Linux内核中使用的数据结构

    Linux内核代码中广泛使用了数据结构和算法,其中最常用的两个是链表和红黑树。 链表 Linux内核代码大量使用了链表这种数据结构
    的头像 发表于 11-09 14:24 485次阅读
    Linux内核中使用的<b class='flag-5'>数据结构</b>