问题
问答题 简答题
设计将带表头的链表逆置的算法。
答案
参考答案:
设单循环链表的头指针为head,类型为LinkList。逆置时需将每一个结点的指针域进行修改,使其原前驱结点成为后继。如果更改q结点的指针域时,设s指向其原前驱结点,p指向其原后驱结点,则只需进行q->next=s;操作即可,算法描述如下:
void invert(LinkList*head)
{//逆置head指针所指向的单循环链表
Linklist*p, *q,*s;
q=head;
p=head->next;
while(p!=head)//当为空时,逐个结点逆置
{
s=q;
q=p;
p=p->next;
q->next=s;
}
P->next=q;
}