1.题目:
设计判断带头结点的循环双链表L(含两个以上的结点)是
否对称相等的算法
2.算法思路:
⚫ 建立两个工作指针p和q,p从左向右扫描L,q从右向左扫描L,两者同时扫描
⚫ 若对应数据结点的data域不相等,则退出循环
⚫ 否则继续比较,直到p与q相等或p的下一个结点为q为止。
此时要考虑结点的奇偶情况
3.代码实现
bool Symm(DLinkNode *L)
{
bool same=true;
DLinkNode *p=L->rLink; //p指向首结点
DLinkNode *q=L->lLink; //q指向尾结点
while (same)
{
if (p->data!=q->data)
same=false;
else
{ if (p==q || p==q->lLink) break;
q=q->lLink; //q前移
p=p->rLink; //p后移
}
}
return same;
}