设计算法判断链表是否中心对称
考研练习第三题
题目:设单链表的表头指针为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; //链表中心不对称
}
设计算法判断链表是否中心对称相关推荐
- c语言判断字符是否对称,2020-07-23(C语言)数据结构-试设计算法判断该链表的全部n个字符是否中心对称。...
//设单链表的表头指针为L,结点结构由data和next两个域构成,其中data域为字符型.试设计算法判断该链表的全部n个字符是否中心对称.例如xyx,xyyx都是中心对称. include incl ...
- 采用邻接表存储有向图,设计算法判断任意两个顶点间是否存在路径。设计算法,将一个无向图的邻接矩阵转换为邻接表。
采用邻接表存储有向图,设计算法判断任意两个顶点间是否存在路径.设计算法,将一个无向图的邻接矩阵转换为邻接表. 采用邻接表存储有向图,设计算法判断任意两个顶点间是否存在路径. 设计算法,将一个无向图的邻 ...
- (左神)数据结构与算法 ---- 判断链表是否为回文结构的三种高效解法
链表在数据结构与算法中可谓"北斗之尊",现在让我们通过判断链表回文的小练习进一步更深地了解链表~ 文章目录 一.链表的节点结构 二.判断一个链表是否为回文结构 (一)解法1:将链表 ...
- java算法判断链表有没有闭环_前端算法系列之二:数据结构链表、双向链表、闭环链表、有序链表...
前言 上一次我们讲到了数据结构:栈和队列,并对他们的运用做了一些介绍和案例实践:我们也讲到了怎么简单的实现一个四则运算.怎么去判断标签是否闭合完全等等,anyway,今天接着和大家介绍一些数据结构: ...
- 已知带头结点单链表中各结点的元素值为整形且递增有序,设计算法删除链表中所有大于mink且小于maxk的元素,并释放被删结点的空间。
核心函数如下: void LinkList_clear(LinkList &L,int mink,int maxk) {node *q,*t,*p,*r;p = L->next;whil ...
- 判断链表是否是中心对称
题目:设单链表的表头指针为h,节点结构由data和next两个域构成,其中data域为字符型.试设计算法判断该链表的全部n个字符是否是中心对称,例如xyx,xyyx都是中心对称. 分析: ...
- 【算法】图(一)拓扑排序的实现 图的邻接表算法 判断是否图G中存在环
文章目录 用list来表示图,判断是否存在环 邻接表实现拓扑排序 用DFS(邻接矩阵) 来实现拓扑排序. 判断无向图顶点是否全部连通 判断图G中从顶点u到v是否存在简单路径 输出图G中从顶点u到v的所 ...
- 链表的特点,单链表的定义、存储结构,单链表的基本操作(判断链表是否为空、销毁链表、清空链表、求链表表长、查找、插入、删除,建立单链表)
目录 一.链表(链式存储结构)的特点 二.单链表的定义和表示 1.带头结点的单链表 2.单链表的存储结构 三.单链表基本操作的实现 1.单链表的初始化(带头结点的单链表) 2.补充单链表的几个常用简单 ...
- 在一个递增有序的线性表中,有数值相同的元素存在。若存储方式为单链表,设计算法,去掉数值相同的元素,使得表中不再有重复的元素。
在一个递增有序的线性表中,有数值相同的元素存在.若存储方式为单链表,设计算法,去掉数值相同的元素,使得表中不再有重复的元素.例如(7,10,10,21,30,42,42,42,51,70)将变为(7, ...
- 双指针算法之快慢指针(一):力扣【判断链表是否有环】leetcode-141、142
一.简介:什么是快慢指针? 快慢指针,顾名思义,无非就是设置一个快指针,一个慢指针,初始化的时候,快指针和慢指针都指向链表的头结点,前进的时候一个在前一个在后,结合起来可以十分巧妙的解决链表中的一些问 ...
最新文章
- Alchemy环境的搭建
- c#.net常用的小函数和方法集
- playbook核心元素之 模板template 介绍(7)
- 用python实现自动填数生成表格v2.0
- 【Android】可以下拉刷新的webview,使你的webview效果更加好看,封装自己的WebView...
- python中自带的三个装饰器_python三个自带装饰器的功能与使用(@property、@staticmethod、@classmethod)...
- 30.Node.js 全局对象
- Span元素的 width属性 无效果原因及解决方案
- 文本挖掘(part6)--共现矩阵
- 关于width: 100%的一些看法
- C++ 序列化和反序列化学习
- ThreadPoolExecutor的应用和实现分析(中)—— 任务处理相关源码分析 线程利用(转)...
- ros中web端通过 按钮加载本地静态 pgm 地图显示在canvas画布中
- 趣谈网络协议栈,以太网基础MAC和PHY
- U盘文件系统FAT32转为NTFS
- 在ubuntu中安装DroidCam
- linux 上如何测速
- 【多功能改进】基于OpenCV图像采集的人脸识别网络推流及局域网无线控制系统(将图像在URL地址上输出,可做成网络摄像头,带识别框)
- python 统计文本字数 生成词云图
- 华为穿戴数据同步到微信运动