考研练习第三题

题目:设单链表的表头指针为L,结点结构由data和next两个域组成,其中data域为字符型。试设计算法判断该链表的全部n个字符是否中心对称。例如xyx,xyyx都是中心对称。

算法思想:使用栈来判断链表中的数据是否中心对称。让链表的前一半元素依次进栈,在处理链表的后一半元素的时,当访问到链表的一个元素时,就从栈中弹出一个元素,两个元素比较,若相同,则将链表的下一个元素与栈中弹出的元素进行比较,直到链表尾。这时若是空栈,则得出链表中心对称的结论;否则,当链表中的一个元素与栈中弹出的元素不同时,结论为链表非中心对称,结束算法的执行。

算法如下:

int dc(Linklist &L ,int n){//L是带头节点的n个元素单链表,本算法判断链表是否中心对称int i;char s[n/2];    //s字符栈p=p->next;       //p是链表的工作指针,指向待处理的当前元素for(i=0 ; i<n/2 ; i++){//链表的前一半元素进栈s[i]=p->data;p=p->next;}i--;//恢复i值;if(n%2==1)p=p->next;while(p!=NULL&&s[i]==p->next){//检测是否中心对称i--;           //i充当栈顶指针p=p->next;}    if(i==1)          //栈为空栈的时候   return 1;       //链表中心对称elsereturn 0;       //链表中心不对称
}

设计算法判断链表是否中心对称相关推荐

  1. c语言判断字符是否对称,2020-07-23(C语言)数据结构-试设计算法判断该链表的全部n个字符是否中心对称。...

    //设单链表的表头指针为L,结点结构由data和next两个域构成,其中data域为字符型.试设计算法判断该链表的全部n个字符是否中心对称.例如xyx,xyyx都是中心对称. include incl ...

  2. 采用邻接表存储有向图,设计算法判断任意两个顶点间是否存在路径。设计算法,将一个无向图的邻接矩阵转换为邻接表。

    采用邻接表存储有向图,设计算法判断任意两个顶点间是否存在路径.设计算法,将一个无向图的邻接矩阵转换为邻接表. 采用邻接表存储有向图,设计算法判断任意两个顶点间是否存在路径. 设计算法,将一个无向图的邻 ...

  3. (左神)数据结构与算法 ---- 判断链表是否为回文结构的三种高效解法

    链表在数据结构与算法中可谓"北斗之尊",现在让我们通过判断链表回文的小练习进一步更深地了解链表~ 文章目录 一.链表的节点结构 二.判断一个链表是否为回文结构 (一)解法1:将链表 ...

  4. java算法判断链表有没有闭环_前端算法系列之二:数据结构链表、双向链表、闭环链表、有序链表...

    前言 上一次我们讲到了数据结构:栈和队列,并对他们的运用做了一些介绍和案例实践:我们也讲到了怎么简单的实现一个四则运算.怎么去判断标签是否闭合完全等等,anyway,今天接着和大家介绍一些数据结构: ...

  5. 已知带头结点单链表中各结点的元素值为整形且递增有序,设计算法删除链表中所有大于mink且小于maxk的元素,并释放被删结点的空间。

    核心函数如下: void LinkList_clear(LinkList &L,int mink,int maxk) {node *q,*t,*p,*r;p = L->next;whil ...

  6. 判断链表是否是中心对称

    题目:设单链表的表头指针为h,节点结构由data和next两个域构成,其中data域为字符型.试设计算法判断该链表的全部n个字符是否是中心对称,例如xyx,xyyx都是中心对称. 分析:        ...

  7. 【算法】图(一)拓扑排序的实现 图的邻接表算法 判断是否图G中存在环

    文章目录 用list来表示图,判断是否存在环 邻接表实现拓扑排序 用DFS(邻接矩阵) 来实现拓扑排序. 判断无向图顶点是否全部连通 判断图G中从顶点u到v是否存在简单路径 输出图G中从顶点u到v的所 ...

  8. 链表的特点,单链表的定义、存储结构,单链表的基本操作(判断链表是否为空、销毁链表、清空链表、求链表表长、查找、插入、删除,建立单链表)

    目录 一.链表(链式存储结构)的特点 二.单链表的定义和表示 1.带头结点的单链表 2.单链表的存储结构 三.单链表基本操作的实现 1.单链表的初始化(带头结点的单链表) 2.补充单链表的几个常用简单 ...

  9. 在一个递增有序的线性表中,有数值相同的元素存在。若存储方式为单链表,设计算法,去掉数值相同的元素,使得表中不再有重复的元素。

    在一个递增有序的线性表中,有数值相同的元素存在.若存储方式为单链表,设计算法,去掉数值相同的元素,使得表中不再有重复的元素.例如(7,10,10,21,30,42,42,42,51,70)将变为(7, ...

  10. 双指针算法之快慢指针(一):力扣【判断链表是否有环】leetcode-141、142

    一.简介:什么是快慢指针? 快慢指针,顾名思义,无非就是设置一个快指针,一个慢指针,初始化的时候,快指针和慢指针都指向链表的头结点,前进的时候一个在前一个在后,结合起来可以十分巧妙的解决链表中的一些问 ...

最新文章

  1. Alchemy环境的搭建
  2. c#.net常用的小函数和方法集
  3. playbook核心元素之 模板template 介绍(7)
  4. 用python实现自动填数生成表格v2.0
  5. 【Android】可以下拉刷新的webview,使你的webview效果更加好看,封装自己的WebView...
  6. python中自带的三个装饰器_python三个自带装饰器的功能与使用(@property、@staticmethod、@classmethod)...
  7. 30.Node.js 全局对象
  8. Span元素的 width属性 无效果原因及解决方案
  9. 文本挖掘(part6)--共现矩阵
  10. 关于width: 100%的一些看法
  11. C++ 序列化和反序列化学习
  12. ThreadPoolExecutor的应用和实现分析(中)—— 任务处理相关源码分析 线程利用(转)...
  13. ros中web端通过 按钮加载本地静态 pgm 地图显示在canvas画布中
  14. 趣谈网络协议栈,以太网基础MAC和PHY
  15. U盘文件系统FAT32转为NTFS
  16. 在ubuntu中安装DroidCam
  17. linux 上如何测速
  18. 【多功能改进】基于OpenCV图像采集的人脸识别网络推流及局域网无线控制系统(将图像在URL地址上输出,可做成网络摄像头,带识别框)
  19. python 统计文本字数 生成词云图
  20. 华为穿戴数据同步到微信运动

热门文章

  1. 计算机rs485通讯,RS485与电脑通信
  2. Unity 本地化比较实用的实现方案
  3. 构建用户画像-标签体系
  4. 深信服技术认证之容灾与备份(二)
  5. 10种防止网络被攻击的方法
  6. 网络流量在线分析系统的设计与实现
  7. U盘文件目录损坏且无法读取
  8. 苹果安装app的另一种方式(通过itms-services协议,不通过AppStore,直接安装IOS应用程序)
  9. python爬虫用AI技术-破解企业工商数据抓取+网络爬虫+网站数据采集+数据抓取遇到的三大问题
  10. Labwindows/CVI 编写CAN通讯的上位机