c++数据结构与算法之判断一个链表是否为回文结构的方法

  

本文实例讲述了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++数据结构与算法之判断一个链表是否为回文结构的方法