本文实例讲述了c++判断一个链表是否为回文结构的方法。分享给大家供大家参考,具体如下:
给定一个链表头节点,请判断是否为回文结构
例如:
1,找到链表中间节点,然后将链表中间节点的右边所有节点放入一个栈中。
2,然后从链表首节点和栈顶元素一一对比,不相等则返回false。
算法c++代码:
链表节点结构定义
typedef结构节点 { int数据; 结构节点*下; * pLinkedList}节点; >之前bool isHuiWen (pLinkedList头) { 如果(头==NULL | |头→下==NULL) 返回true; pLinkedList右=头→下;//保存中间节点的下一个节点(若为偶数则为偏右的中间节点) pLinkedList cur=头;//快指针 而(cur→下一个!=零,,坏蛋→下一步→下一个!=NULL) { 右=? 坏蛋=cur→下一步→下; }//当链表总结点个数为奇数情况时: 如果(cur→下一个!=零,,坏蛋→下一步→下==NULL) 右=?//将链表右边的节点放入一个栈中 stack* s=新stack (); 而(对!=NULL) { 年代→推(右); 右=? }//比较链表左右两边节点是否相等 而(!年代→空()) { 如果(头→下一步→数据!=s→前()→数据) 返回错误; 年代→pop (); 头=头→下; } 返回true; } >之前 希望本文所述对大家c++程序设计有所帮助。
c++数据结构与算法之判断一个链表是否为回文结构的方法