使用栈来判断表中的数据是否是中心对称,让链表的前一半元素依次进栈,在处理后半部分元素时,当访问到链表的一个元素时,就从栈中弹出一个元素,两元素进行比较,反复比较,弹出直到链表尾
int symmetry(LinkList L,int n){
int i;
char s[n/2];
LNode *p=L->next;//p为工作指针,指向第一个结点元素
for(i=0;i<n/2;i++){
s[i]=p->data;
p=p->next;
}
//i从前一半元素的最后一个结点的后面回来
//回到前一半元素的最后一个结点
//n如果是奇数,则从中心节点回来
//如果是偶数,则从后半段的第一个结点回来
i--;
if(n%2==1)
//如果n是奇数,此时p指向中心节点
p=p->next;
while(p!=NULL&&s[i]==p->data){
i--;
p=p->next;
}
if(i==-1)
return 1;
else
return 0;
}