题目:
设单链表的表头指针为L,结点结构由data和next两个域构成,其中data域为字符型。试设计算法判断该链表的全部n个字符是否中心对称。例如xyx,xyyx都是中心对称。
分析:
- 链表中心对程,即第一个元素的data和最后一个元素的data相等;第二个元素的data和倒数第二个元素的data相等;以此类推;
- 该题已知链表的长度和头指针,可以先用栈存储前半部分的结点(0~i,i=n/2);
- 然后遍历链表的后半部分,将i+1的元素值拿出来与栈顶元素值相比较;如果相同,就弹出栈顶元素,链表指针后移,准备处理下一个结点;
- 如此循环到:存在不相等或者是指针指向NULL,就退出循环;
代码:
bool symmetry(LinkList L){
if(L->next ==